جدول محتوایی

کاربر MySQL

MySQL یک سیستم مدیریت دیتابیس رابطه ای منبع باز است. معمولاً به عنوان بخشی از پشته LAMP (که مخفف لینوکس، آپاچی، MySQL و PHP است) و Lemp استفاده می شود و تا زمان نوشتن این مقاله، محبوب ترین دیتابیس منبع باز در جهان است.در این مقاله نحوه ایجاد یک کاربر MySQL جدید و اعطای مجوزهای لازم برای انجام انواع اقدامات را به آن، به شما آموزش میدهیم.

پیش نیازها

باید به دیتابیس MySQL دسترسی داشته باشید. در این مقاله فرض میکنیم که این پایگاه داده بر روی یک سرور مجازی که اوبونتو 20.04 را اجرا می‌کند، نصب شده است. (خرید سرور مجازی)

 

در کل، صرف نظر از سیستم عامل اصلی سرور شما، روش‌های ایجاد یک کاربر MySQL جدید و اعطای مجوز به آنها معمولاً یکسان خواهد بود.

لطفاً توجه داشته باشید که هر بخش از دستورات مثالی که باید در سیستم خودتان تغییر دهید، به رنگ قرمز مشخص می‌شوند.

 

ساخت کاربر جدید در MySQL

پس از نصب، MySQL یک حساب کاربری root ایجاد می کند که می توانید از آن برای مدیریت دیتابیس خود استفاده کنید. این کاربر دارای امتیازات کامل بر سرور MySQL است. به این معنی که کنترل کاملی بر هر پایگاه داده، جدول، کاربر و غیره دارد. در این مرحله نحوه استفاده از کاربر روت MySQL برای ایجاد یک حساب کاربری جدید و اعطای امتیازات به آن توضیح داده شده است.

در سیستم‌های اوبونتو که MySQL 5.7 (و نسخه‌های بعدی) را اجرا می‌کنند، کاربر روت MySQL به‌طور پیش‌فرض و نه با رمز عبور، با استفاده از افزونه auth_socket احراز هویت می‌شود. این افزونه نیاز دارد که نام کاربر سیستم عاملی که کلاینت MySQL را فراخوانی می کند با نام کاربر MySQL مشخص شده در دستور مطابقت داشته باشد. به این معنی است که برای دسترسی به کاربر روت MySQL باید دستور mysql را با sudo پیشی کنید تا آن را با امتیازات کاربر روت اوبونتو فراخوانی کنید:

sudo mysql

 

توجه: اگر کاربر روت MySQL شما برای احراز هویت با رمز عبور پیکربندی شده است، برای دسترسی به پوسته MySQL باید از دستور دیگری استفاده کنید. موارد زیر کلاینت MySQL شما را با امتیازات کاربر معمولی اجرا می کند و شما فقط با احراز هویت با رمز عبور صحیح، امتیازات مدیر را در پایگاه داده به دست خواهید آورد:

mysql -u root -p

 

هنگامی که به خط فرمان MySQL دسترسی پیدا کردید، می توانید یک کاربر جدید با عبارت CREATE USER ایجاد کنید. به سینتکس دفت کنید:

CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';

بعد از CREATE USER یک نام کاربری مشخص می کنید. بلافاصله پس از آن یک علامت @ و سپس نام میزبانی که این کاربر از آن متصل می شود، می آید. اگر فقط قصد دارید از سرور اوبونتو به این کاربر به صورت محلی دسترسی داشته باشید، می توانید localhost را تعیین کنید. قرار دادن نام کاربری و میزبان همیشه ضروری نیست، اما انجام این کار می تواند به جلوگیری از خطاها کمک کند.

هنگام انتخاب افزونه احراز هویت کاربر، چندین گزینه دارید. افزونه auth_socket که قبلا ذکر شد می تواند مناسب باشد، زیرا امنیت قوی را بدون نیاز به کاربران معتبر برای وارد کردن رمز عبور برای دسترسی به پایگاه داده فراهم می کند. اما از اتصالات راه دور نیز جلوگیری می کند، که می تواند در زمانی که برنامه های خارجی نیاز به تعامل با MySQL دارند، شرایط را پیچیده کند.

به عنوان یک جایگزین، می‌توانید بخش WITH authentication_plugin از سینتکس را کاملاً کنار بگذارید تا کاربر با افزونه پیش‌فرض MySQL، caching_sha2_password، احراز هویت کند. مستندات MySQL این افزونه را به کاربرانی که می خواهند با رمز عبور وارد شوند به دلیل ویژگی های امنیتی قوی آن توصیه می کند.

برای ایجاد کاربری که با caching_sha2_password احراز هویت می کند، دستور زیر را اجرا کنید. مطمئن شوید که sammy را به نام کاربری و password  دلخواه خود به یک رمز عبور قوی انتخاب کنید:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

 

اعطای مجوزها به کاربر جدید MySQL

سینتکس کلی برای اعطای امتیازات کاربر در MySQL به شرح زیر است:

GRANT PRIVILEGE ON database.table TO 'username'@'host';

مقدار PRIVILEGE در این نحو مثال مشخص می کند که کاربر مجاز است چه اقداماتی را در پایگاه داده و جدول مشخص شده انجام دهد. می‌توانید با جدا کردن هر کدام با کاما، چندین امتیاز را در یک دستور به یک کاربر اختصاص دهید. همچنین می توانید با وارد کردن ستاره (*) به جای database و table ، امتیازات کامل را به کاربر اعطا کنید. در SQL، ستاره ها کاراکترهای خاصی هستند که برای نشان دادن “همه” در پایگاه داده ها یا جداول استفاده می شوند.

برای نمونه، دستور زیر به کاربر امتیازات جهانی برای ایجاد، تغییر، و حذف پایگاه‌های داده، جداول و کاربران و همچنین قدرت درج، به‌روزرسانی و حذف داده‌ها از هر جدول روی سرور را می‌دهد. همچنین به کاربر این امکان را می دهد که داده ها را با SELECT جستجو کند، کلیدهای خارجی را با کلمه کلیدی REFERENCES ایجاد کند و عملیات FLUSH را با امتیاز RELOAD انجام دهد. اما شما فقط باید به کاربران مجوزهای مورد نیاز خود را بدهید و در صورت لزوم می توانید امتیازات کاربر خود را تنظیم کنید.

می توانید لیست کامل امتیازات موجود را در اسناد رسمی MySQL ببینید.

GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'user'@'localhost' WITH GRANT OPTION;

توجه داشته باشید که این دستور شامل WITH GRANT OPTION نیز می باشد. که به کاربر MySQL شما اجازه می دهد هر گونه مجوزی را که دارد به سایر کاربران سیستم اعطا کند.

 

هشدار: برخی از کاربران ممکن است بخواهند به کاربر MySQL خود امتیاز ALL PRIVILEGES را اعطا کنند، که به آنها امتیازات کاملی شبیه به امتیازات کاربر اصلی می دهد، مانند:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;

 

بسیاری از راهنماها پیشنهاد می‌کنند که دستور FLUSH PRIVILEGES را بلافاصله پس از یک عبارت CREATE USER یا GRANT اجرا کنید تا جداول اعطا را مجدداً بارگیری کنید تا مطمئن شوید که امتیازات جدید اعمال می‌شوند:

FLUSH PRIVILEGES;

 

اگر نیاز به لغو مجوز دارید، ساختار تقریباً مشابه اعطای مجوز است:

REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';

توجه داشته باشید که هنگام لغو مجوزها، به جای TO که هنگام اعطای مجوزها استفاده کردید، از FROM استفاده کنید.

 

با اجرای دستور SHOW GRANTS می توانید مجوزهای فعلی کاربر را بررسی کنید:

SHOW GRANTS FOR 'username'@'host';

 

همانطور که می توانید دیتابیس ها را با DROP حذف کنید، می توانید از DROP برای حذف یک کاربر استفاده کنید:

DROP USER 'username'@'localhost';

 

پس از ایجاد کاربرMySQL و دادن امتیازات به آنها، می توانید از کلاینت MySQL خارج شوید:

exit

 

در آینده، برای ورود به عنوان کاربر MySQL جدید خود، از دستوری مانند زیر استفاده خواهید کرد:

mysql -u user -p

 

فلگ -p باعث می شود که کلاینت MySQL از شما رمز عبور کاربر MySQL را برای احراز هویت درخواست کند.

 

جمع بندی

با دنبال کردن این آموزش، یاد گرفتید که چگونه یک کاربر جدید اضافه کنید و مجوزهای مختلفی را در MySQL به آن بدهید. امیدوارم برایتان مفید بوده باشد.

 

17رای - امتیاز 5 ممنون از امتیازی که دادید..!

دسته بندی شده در: