نحوه ایجاد حساب کاربری MySQL و اعطای امتیازات

نحوه ایجاد حساب کاربری MySQL و اعطای امتیازات

مقدمه

MySQL محبوب‌ترین سیستم مدیریت پایگاه‌داده متن باز است. سرور MySQL، امکان ایجاد حساب‌های کاربری متعدد و اعطای امتیازات مناسب را ‌می‌دهد تا کاربران بتوانند به پایگاه‌های داده دسترسی داشته باشند و آن را مدیریت کنند.

قبل از شروع

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

تمامی دستورات به عنوان کاربر مدیریت یا یک حساب root اجرا می‌شوند. حداقل امتیازاتی که برای ایجاد حساب کاربری و تعریف امتیازات آن‌ها لازم است CREATE USER و GRANT می‌باشد.

برای دسترسی به MySQL Shell دستور زیر را تایپ کنید و در زمان درخواست رمز کاربری MySQL root را وارد نمایید.

$ mysql -u root -p

اگر MySQL نسخه5.7 یا آنسخه بالاتری دارید که از افزونه auth_socket استفاده می‌کند، با تایپ دستور زیر، به عنوان root وارد شوید.

$ sudo mysql

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

یک حساب کاربری در MySQL از دو بخش تشکیل شده است: user name و host name

برای ایجاد یک حساب کاربری MySQL جدید، دستور زیر را اجرا کنید:

mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';

newuser را با اسم کاربری جدید و user_password را با رمز ورودی جدید عوض نمایید.

در مثال بالا، بخش hostname به localhost تنظیم شده، بدین معنا، که کاربر فقط از طریق localhost قادر به اتصال به سرور MySQL خواهد بود. برای دسترسی به host دیگر، قسمت hostname را با IP دستگاه از راه‌دور تغییر دهید. به عنوان مثال، برای دسترسی به دستگاهی با 10.8.0.5 شما دستور زیر را اجرا خواهید کرد.

mysql> CREATE USER 'newuser'@'10.8.0.5' IDENTIFIED BY 'user_password';

برای ایجاد یک کاربر که بتواند از هر host متصل شود، از “%” به عنوان قسمت host استفاده کنید:

mysql> CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';

اعطای امتیازات به یک حساب کاربری MySQL

در اینجا چندین امتیاز وجود دارد که می‌توانند به یک کاربر اعطا شوند.

بیشترین امتیازات استفاده شده عبارت‌اند از:

ALL PRIVILEGES : تمامی امتیازات را به یک کاربر اعطا می‌کند.

CREATE : حساب کاربری مجاز است جداول و پایگاه‌های داده ایجاد کند.

DROP : حساب کاربری مجاز است جداول و پایگاه‌های داده را حذف کند.

DELETE : حساب کاربری مجاز است ردیف‌ها را از یک جدول مشخص حذف کند.

INSERT : حساب کاربری مجاز است ردیف‌ها را در یک جدول مشخص وارد کند.

SELECT : حساب کاربری مجاز است یک پایگاه‌داده را بخواند.

UPDATE : حساب کاربری مجاز است ردیف‌های جدول را به‌روز کند.

برای اعطا کردن امتیازات مشخص به یک حساب کاربری، از دستور زیر استفاده نمایید:

mysql> GRANT permission1, permission2 ON database_name.table_name TO 'database_user'@'localhost';

در اینجا چند نمونه مثال آورده شده است:

  • تمامی امتیازات را به حساب کاربری در یک پایگاه‌داده مشحص اعطا نمایید:

mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';

  • تمامی امتیازات را به حساب کاربری در تمامی پایگاه‌های داده اعمال نمایید:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';

  • تمامی امتیازات را به حساب کاربری در یک جدول مشخص از یک پایگاه‌داده اعمال نمایید:

mysql> GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';

  • چندین امتیاز را به حساب کاربری در یک پایگاه‌داده مشخص اعمال نمایید:

mysql> GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';

نمایش امتیازات حساب کاربری MySQL

برای پیدا کردن امتیازات اعطا شده به یک حساب کاربری MySQL خاص، از عبارت SHOW GRANTS استفاده نمایید:

mysql> SHOW GRANTS FOR 'database_user'@'localhost';

خروجی چیزی شبیه به زیر خواهد بود:

Output
+---------------------------------------------------------------------------+
| Grants for database_user@localhost                                       |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'database_user'@'localhost'                        |
| GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost' |
+---------------------------------------------------------------------------+
2 rows in set (0.00 sec)

لغو امتیازات از یک حساب کاربری MySQL

دستور برای ابطال یک یا چند امتیاز از یک حساب کاربری تقریبا با اعطا کردن امتیازات یکسان است. برای لغو امتیازات یک حساب کاربری MySQL، دستور زیر را اجرا نمایید:

mysql> REVOKE ALL PRIVILEGES ON database_name.* FROM 'database_user'@'localhost';

حذف یک حساب کاربری MySQL

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

mysql> DROP USER 'user'@'localhost'

دستور فوق، حساب کاربری و امتیازات آن را حذف می‌کند.

نتیجه‌گیری

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

منبع: https://linuxize.com/post/how-to-create-mysql-user-accounts-and-grant-privileges/#revoke-privileges-from-a-mysql-user-account