ایجاد و مدیریت کاربر جدید در دیتابیس MySQL


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

شما می‌توانید با استفاده از ابزارهای مختلفی نظیر mysql-cli، کاربران جدید با دسترسی‌های جدید در دیتابیس خود ایجاد کنید؛ در ادامه به نحوه ساخت کاربران جدید با دسترسی‌های مختلف در دیتابیس، پرداخته شده است.

برای ساخت کاربر جدید در دیتابیس، در ابتدا باید ابزار mysql-cli را بر روی سیستم (یا سرور خود)، نصب کنید؛ در ادامه، بایستی با استفاده از اطلاعات موجود در بخش نحوه اتصال دیتابیس‌تان در لیارا و با استفاده از دستور زیر، در ترمینال، به دیتابیس با کاربر root، متصل شوید:

کپی
mysql --host <hostname> -u <username> -p<password> --port <port> -D <database_name>

به عنوان مثال:

پس از اتصال موفق، می‌توانید با استفاده از دستور CREATE USER، کاربران مد نظر خود را، ایجاد کنید.

ساخت کاربر با دسترسی Read-Only

برای ایجاد کاربر جدید که تنها اجازه خواندن اطلاعات (READ) از دیتابیس را دارد، می‌توانید از دستورات زیر استفاده کنید:

کپی
CREATE USER 'readonly_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT ON <database_name>.* TO 'readonly_user'@'%';
FLUSH PRIVILEGES;

دستور فوق، یک کاربر با نام readonly_user و رمزعبور password ایجاد می‌کند که این کاربر می‌تواند فقط داده‌ها را، در تمامی جداول موجود در دیتابیس مورد نظر، SELECT کند (بخواند). به عنوان مثال:

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

بدیهی است که کاربر ایجاد شده فوق، نمی‌تواند دسترسی غیر از SELECT کردن داده‌ها را داشته باشد؛ مگر اینکه دسترسی‌اش توسط کاربر root، تغییر پیدا کند.

ساخت کاربر با دسترسی محدود به برخی جداول

در صورتی که بخواهید کاربری ایجاد کنید که فقط به چند جدول مشخص دسترسی داشته باشد، می‌توانید مانند دستورات زیر عمل کنید:

کپی
CREATE USER 'limited_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE ON <database_name>.<table_name_1> TO 'limited_user'@'%';
GRANT SELECT ON <database_name>.<table_name_2> TO 'limited_user'@'%';
FLUSH PRIVILEGES;

دستور فوق، یک کاربر به نام limited_user و رمزعبور password ایجاد می‌کند که می‌تواند در جداول <table_name_1> و <table_name_2> در یک دیتابیس مشخص، عملیات SELECT , INSERT و UPDATE را، انجام دهد. مثال زیر، نمونه‌ای از ایجاد چنین کاربری در یک دیتابیس مشخص است:

بدیهی است که کاربر ایجاد شده فوق، نمی‌تواند دسترسی غیر از دسترسی‌های تعریف شده را داشته باشد؛ مگر اینکه دسترسی‌اش توسط کاربر root، تغییر پیدا کند.

ساخت کاربر فقط برای تهیه فایل پشتیبان

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

کپی
CREATE USER 'backup_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT, LOCK TABLES, SHOW DATABASES ON *.* TO 'backup_user'@'%';
FLUSH PRIVILEGES;

مشاهده دسترسی‌های یک کاربر

برای مشاهده دسترسی‌های یک کاربر می‌توانید از دستور SHOW GRANTS استفاده کنید. به عنوان مثال، می‌توانید برای مشاهده دسترسی‌های کاربری به نام readonly_user، مانند قطعه کد زیر، عمل کنید:

کپی
SHOW GRANTS FOR 'readonly_user'@'%';

حذف دسترسی‌ یک کاربر

برای حذف یک دسترسی کاربر، می‌توانید از دستور REVOKE استفاده کنید؛ به عنوان مثال، فرض کنید که قصد دارید دسترسی UPDATE در جدول table1 از دیتابیس mydb را از کاربری به نام limited_user، سلب کنید. برای این‌کار، می‌توانید از نمونه قطعه کد زیر، استفاده کنید:

کپی
REVOKE UPDATE ON database_name.table1 FROM 'limited_user'@'%';
FLUSH PRIVILEGES;

حذف یک کاربر

برای حذف کاربر می‌توانید از دستور DROP USER استفاده کنید. به عنوان مثال، برای حذف کاربری به نام readonly_user می‌توانید مانند قطعه کد زیر، عمل کنید:

کپی
DROP USER 'readonly_user'@'%';