دیتابیس MySQL/MariaDB یکی از معروفترین سیستم های مدیریت Database میباشد. سرور دیتابیس مای اسکیول امکان ایجاد کاربران بیشماری را برای ما مهیا میکند و امکان اعطای دسترسی های مناسب و مختلف به منظور دسترسی و مدیریت دیتابیس ها را فراهم میآورد. در این مقاله ما نحوه ساخت، حذف و مدیریت یک کاربر در MySQL/MariaDB و نحوه اعطای سطوح دسترسی یک کاربر به دیتابیس را آموزش خواهیم داد.
قبل از اینکه شروع کنیم، ما فرض را بر این میگذاریم که شما از قبل روی سیستم تان MySQL یا MariaDB را نصب کرده اید. همه دستورات درون shell مای اسکیول توسط کاربر root یا کاربر مدیر سرور قابل اجرا است. حداقل پرمیژن مورد نیاز برای ایجاد اکانت های کاربری و تعریف سطوح دسترسی آنها CREATE USER و GRANT هستند.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب آخرین ورژن MariaDB 10 در CentOS 7/8 - RedHat 7/8 - Debian 8/9/10 - Ubuntu 16/18/19
نحوه پیدا کردن مسیر my.cnf (فایل تنظیمات دیتابیس) در MySQL/MariaDB
برای دسترسی به شل MySQL کافیست دستور زیر را وارد کنید، سپس پسورد کاربر root دیتابیس مای اسکیول را نیز بعد از اجرای دستور، تایپ نمایید.
اگر شما برای کاربر root مای اسکیول پسوردی تعریف نکرده باشید، میتوانید آپشن -p را حذف کنید.
نحوه لیست کردن یوزرهای ایجاد شده در MySQL/MariaDB
در ابتدا برای مشاهده لیست کاربران در MySQL/MariaDB از دستور زیر استفاده کنید.
در صورتی که فقط میخواهید ستون user ها را مشاهده کنید، از دستور زیر استفاده کنید.
نحوه ایجاد یک User جدید در MySQL/MariaDB
یک یوزر در مای اسکیول شامل یک username و host name میباشد. برای ایجاد یک کاربر یا یوزر جدید در MySQL دستور زیر را اجرا کنید.
نکته : مقدار newuser را با نام کاربر جدید مد نظرتان جایگزین کنید، همچنین مقدار user_password را با پسورد کاربر جایگزین کنید.
در دستور بالا بخش hostname برابر با localhost تعریف شده است که این به این معناست که کاربر قادر به اتصال به سرور دیتابیس MySQL تنها از طریق localhost (سیستمی که دیتابیس MySQL/MariaDB روی آن در حال اجرا میباشد) میباشد.
برای اعطای دسترسی از یک هاست دیگر مقدار hostname را که برابر با localhost است با ip ماشین ریموت جابجا کنید. به طور مثال برای دسترسی از ماشینی با ip آدرس 10.8.0.5 به سرور MySQL خود، شما باید دستور زیر را اجرا کنید.
برای ایجاد یک کاربری که بتواند از هر هاستی به سرور دیتابیس MySQL متصل شود، باید در بخش هاست از عبارت % همانند زیر استفاده کنید.
همچنین توصیه میشود مطالعه کنید :
آموزش تغییر پسورد کاربران در MySQL/MariaDB
اعطای سطوح دسترسی (Grant Privileges) به یک کاربر در MySQL/MariaDB
انواع زیادی از سطوح دسترسی وجود دارد که میتوان به یک کاربر اختصاص داد. شما میتوانید لیست کاملی از سطوح دسترسی که توسط MySQL پشتیبانی میشود را در اینجا مشاهده کنید.
رایج ترین سطوح دسترسی مورد استفاده :
ALL PRIVILEGES : اعطای همه دسترسی ها به یک کاربر
CREATE : کاربر مجاز به ایجاد دیتابیس و تیبل ها میباشد
DROP : کاربر مجاز به حذف دیتابیس و جداول میباشد
DELETE : کاربر مجاز به حذف ردیف ها از یک جدول خاص میباشد
INSERT : کاربر مجاز به وارد کردن اطلاعات به ردیف ها به یک جدول خاص میباشد
SELECT : کاربر مجاز به خواندن اطلاعات یک دیتابیس میباشد
UPDATE : کاربر مجاز به آپدیت ردیف های جدول میباشد
همچنین توصیه میشود مطالعه کنید :
آموزش کامل دستورات پایه ای MySQL/MariaDB
برای اعطای دسترسی خاص به یک کاربر شما میتوانید از ساختار زیر استفاده کنید.
شما میتوانید به جای permission از سطوح دسترسی که در بالا شرح داده شد، استفاده کنید. در اینجا یکسری مثال ها را مشاهده میکنید.
اعطای تمام سطوح دسترسی به یک کاربر روی یک دیتابیس خاص
اعطای تمام دسترسی ها به یک کاربر روی کل دیتابیس ها :
اعطای تمام دسترسی ها به یک کاربر روی همه دیتابیس ها
اعطای همه دسترسی ها به یک کاربر روی یک جدول خاص از یک دیتابیس
اعطای چندین سطوح دسترسی به یک کاربر روی یک دیتابیس خاص
مشاهده سطوح دسترسی یک کاربر در MySQL/MariaDB
برای پیدا کردن سطوح دسترسی که به یک کاربر در MySQL اختصاص داده شده از دستور show grants همانند زیر استفاده میکنیم.
نحوه لغو دسترسی های یک کاربر در MySQL/MariaDB
ساختار مربوط به لغو یا حذف یک یا چندین پرمیژن از یک کاربر همانند آنچه که در هنگام اعطای پرمیژن بیان کردیم میباشد. به عنوان مثال برای حذف همه پرمیژن های یک کاربر روی یک دیتابیس خاص از دستور زیر استفاده میکنیم.
نحوه حذف یک کاربر موجود در MySQL/MariaDB
برای حذف یک یوزر در مای اسکیول از دستور drop user استفاده میکنیم.
دستور بالا کاربر مورد نظر و پرمیژن هایش را حذف خواهد کرد. برای حذف چندین کاربر به صورت همزمان در MySQL/MariaDB از دستور زیر استفاده کنید.
برای مطمئن شدن از حذف کاربر، همانند دستور SELECT User, Host, Password FROM mysql.user که در بالا شرح داده شد، لیست کاربران را مشاهده میکنیم.
نتیجه :
در این مقاله ما تنها مطالب پایه را بررسی کردیم که میتوانند برای هر کسی که میخواهد در مورد ایجاد کاربران MySQL/MariaDB و اعطای سطوح دسترسی به آنها بیشتر بداند شروع خوبی باشد. اگر شما هر سوال یا نظری دارید آن را با ما به اشتراک بگذارید.
قبل از اینکه شروع کنیم، ما فرض را بر این میگذاریم که شما از قبل روی سیستم تان MySQL یا MariaDB را نصب کرده اید. همه دستورات درون shell مای اسکیول توسط کاربر root یا کاربر مدیر سرور قابل اجرا است. حداقل پرمیژن مورد نیاز برای ایجاد اکانت های کاربری و تعریف سطوح دسترسی آنها CREATE USER و GRANT هستند.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب آخرین ورژن MariaDB 10 در CentOS 7/8 - RedHat 7/8 - Debian 8/9/10 - Ubuntu 16/18/19
نحوه پیدا کردن مسیر my.cnf (فایل تنظیمات دیتابیس) در MySQL/MariaDB
برای دسترسی به شل MySQL کافیست دستور زیر را وارد کنید، سپس پسورد کاربر root دیتابیس مای اسکیول را نیز بعد از اجرای دستور، تایپ نمایید.
کد PHP:
# mysql -u root -p
اگر شما برای کاربر root مای اسکیول پسوردی تعریف نکرده باشید، میتوانید آپشن -p را حذف کنید.
نحوه لیست کردن یوزرهای ایجاد شده در MySQL/MariaDB
در ابتدا برای مشاهده لیست کاربران در MySQL/MariaDB از دستور زیر استفاده کنید.
کد PHP:
mysql> SELECT User, Host, Password FROM mysql.user;
در صورتی که فقط میخواهید ستون user ها را مشاهده کنید، از دستور زیر استفاده کنید.
کد PHP:
mysql> SELECT DISTINCT User FROM mysql.user;
نحوه ایجاد یک User جدید در MySQL/MariaDB
یک یوزر در مای اسکیول شامل یک username و host name میباشد. برای ایجاد یک کاربر یا یوزر جدید در MySQL دستور زیر را اجرا کنید.
کد PHP:
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';
نکته : مقدار newuser را با نام کاربر جدید مد نظرتان جایگزین کنید، همچنین مقدار user_password را با پسورد کاربر جایگزین کنید.
در دستور بالا بخش hostname برابر با localhost تعریف شده است که این به این معناست که کاربر قادر به اتصال به سرور دیتابیس MySQL تنها از طریق localhost (سیستمی که دیتابیس MySQL/MariaDB روی آن در حال اجرا میباشد) میباشد.
برای اعطای دسترسی از یک هاست دیگر مقدار hostname را که برابر با localhost است با ip ماشین ریموت جابجا کنید. به طور مثال برای دسترسی از ماشینی با ip آدرس 10.8.0.5 به سرور MySQL خود، شما باید دستور زیر را اجرا کنید.
کد PHP:
mysql> CREATE USER 'newuser'@'10.8.0.5' IDENTIFIED BY 'user_password';
برای ایجاد یک کاربری که بتواند از هر هاستی به سرور دیتابیس MySQL متصل شود، باید در بخش هاست از عبارت % همانند زیر استفاده کنید.
کد PHP:
mysql> CREATE USER 'newuser'@'%' IDENTIFIED BY 'user_password';
همچنین توصیه میشود مطالعه کنید :
آموزش تغییر پسورد کاربران در MySQL/MariaDB
اعطای سطوح دسترسی (Grant Privileges) به یک کاربر در MySQL/MariaDB
انواع زیادی از سطوح دسترسی وجود دارد که میتوان به یک کاربر اختصاص داد. شما میتوانید لیست کاملی از سطوح دسترسی که توسط MySQL پشتیبانی میشود را در اینجا مشاهده کنید.
رایج ترین سطوح دسترسی مورد استفاده :
ALL PRIVILEGES : اعطای همه دسترسی ها به یک کاربر
CREATE : کاربر مجاز به ایجاد دیتابیس و تیبل ها میباشد
DROP : کاربر مجاز به حذف دیتابیس و جداول میباشد
DELETE : کاربر مجاز به حذف ردیف ها از یک جدول خاص میباشد
INSERT : کاربر مجاز به وارد کردن اطلاعات به ردیف ها به یک جدول خاص میباشد
SELECT : کاربر مجاز به خواندن اطلاعات یک دیتابیس میباشد
UPDATE : کاربر مجاز به آپدیت ردیف های جدول میباشد
همچنین توصیه میشود مطالعه کنید :
آموزش کامل دستورات پایه ای MySQL/MariaDB
برای اعطای دسترسی خاص به یک کاربر شما میتوانید از ساختار زیر استفاده کنید.
کد PHP:
mysql> GRANT permission1, permission2 ON database_name.table_name TO 'database_user'@'localhost';
شما میتوانید به جای permission از سطوح دسترسی که در بالا شرح داده شد، استفاده کنید. در اینجا یکسری مثال ها را مشاهده میکنید.
اعطای تمام سطوح دسترسی به یک کاربر روی یک دیتابیس خاص
کد PHP:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';
اعطای تمام دسترسی ها به یک کاربر روی کل دیتابیس ها :
کد PHP:
GRANT ALL ON *.* TO 'database_user'@'localhost';
اعطای تمام دسترسی ها به یک کاربر روی همه دیتابیس ها
کد PHP:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
اعطای همه دسترسی ها به یک کاربر روی یک جدول خاص از یک دیتابیس
کد PHP:
mysql> GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';
اعطای چندین سطوح دسترسی به یک کاربر روی یک دیتابیس خاص
کد PHP:
mysql> GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';
مشاهده سطوح دسترسی یک کاربر در MySQL/MariaDB
برای پیدا کردن سطوح دسترسی که به یک کاربر در MySQL اختصاص داده شده از دستور show grants همانند زیر استفاده میکنیم.
کد PHP:
mysql> SHOW GRANTS FOR 'database_user'@'localhost';
نحوه لغو دسترسی های یک کاربر در MySQL/MariaDB
ساختار مربوط به لغو یا حذف یک یا چندین پرمیژن از یک کاربر همانند آنچه که در هنگام اعطای پرمیژن بیان کردیم میباشد. به عنوان مثال برای حذف همه پرمیژن های یک کاربر روی یک دیتابیس خاص از دستور زیر استفاده میکنیم.
کد PHP:
mysql> REVOKE ALL PRIVILEGES ON database_name.* FROM 'database_user'@'localhost';
نحوه حذف یک کاربر موجود در MySQL/MariaDB
برای حذف یک یوزر در مای اسکیول از دستور drop user استفاده میکنیم.
کد PHP:
mysql> DROP USER 'user'@'localhost';
دستور بالا کاربر مورد نظر و پرمیژن هایش را حذف خواهد کرد. برای حذف چندین کاربر به صورت همزمان در MySQL/MariaDB از دستور زیر استفاده کنید.
کد PHP:
mysql> DROP USER 'user1@localhost' 'user2@localhost';
برای مطمئن شدن از حذف کاربر، همانند دستور SELECT User, Host, Password FROM mysql.user که در بالا شرح داده شد، لیست کاربران را مشاهده میکنیم.
نتیجه :
در این مقاله ما تنها مطالب پایه را بررسی کردیم که میتوانند برای هر کسی که میخواهد در مورد ایجاد کاربران MySQL/MariaDB و اعطای سطوح دسترسی به آنها بیشتر بداند شروع خوبی باشد. اگر شما هر سوال یا نظری دارید آن را با ما به اشتراک بگذارید.