رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش ساخت کاربر در MySQL و دادن دسترسی‌ها (قدم‌به‌قدم)

آموزش ساخت کاربر در MySQL و دادن دسترسی‌ها (قدم‌به‌قدم)

MySQL یکی از محبوب‌ترین سیستم‌های مدیریت پایگاه داده رابطه‌ای (RDBMS) متن‌باز دنیاست و معمولاً در کنار Linux، Apache و PHP به عنوان بخشی از استک معروف LAMP استفاده می‌شود.

MySQL یکی از محبوب‌ترین سیستم‌های مدیریت پایگاه داده رابطه‌ای (RDBMS) متن‌باز دنیاست و معمولاً در کنار Linux، Apache و PHP به عنوان بخشی از استک معروف LAMP استفاده می‌شود.

یکی از مهم‌ترین کارهای امنیتی در MySQL، ساخت کاربرهای جداگانه و دادن دسترسی محدود به هر کدام است، نه استفاده مستقیم از کاربر root برای همه کارها.

در این آموزش یاد می‌گیرید چطور:

  • کاربر جدید در MySQL بسازید

  • سطح دسترسی مشخص به او بدهید

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

  • خطاهای رایج مربوط به کاربران را برطرف کنید


پیش‌نیازها

برای انجام مراحل این آموزش باید:

  • به یک سرور دارای MySQL دسترسی داشته باشید

  • دسترسی مدیریتی (root یا sudo) روی سیستم داشته باشید

این آموزش معمولاً با Ubuntu انجام می‌شود، اما دستورات MySQL روی سایر توزیع‌ها هم مشابه هستند.


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

بعد از نصب MySQL، یک کاربر مدیریتی به نام root ساخته می‌شود که دسترسی کامل به کل سرور پایگاه داده دارد. استفاده دائمی از این کاربر برای برنامه‌ها کار اشتباهی است. بهتر است برای هر پروژه یا اپلیکیشن، کاربر جدا بسازید.

ورود به MySQL به عنوان root

در اکثر سیستم‌های Ubuntu:

sudo mysql
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

اگر root با پسورد تنظیم شده باشد:

mysql -u root -p
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

دستور ساخت کاربر

ساختار کلی:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مثال:

CREATE USER 'aliuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

توضیح بخش‌ها:

بخشتوضیح
usernameنام کاربر دیتابیس
hostمحلی که کاربر اجازه اتصال دارد (مثلاً localhost یا %)
passwordرمز عبور کاربر

اگر از % استفاده کنید، کاربر می‌تواند از هر IP وصل شود.


پلاگین‌های احراز هویت در MySQL

MySQL چند روش برای احراز هویت دارد:

پلاگینامنیتکاربرد
caching_sha2_passwordبسیار قویپیش‌فرض MySQL 8 و مناسب برنامه‌های جدید
mysql_native_passwordخوبسازگار با برنامه‌های قدیمی و برخی نسخه‌های PHP
auth_socketبر پایه کاربر سیستمفقط اتصال محلی بدون پسورد

مثال استفاده از پلاگین خاص:

CREATE USER 'aliuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

دادن دسترسی به کاربر (GRANT)

بعد از ساخت کاربر، باید مشخص کنیم چه کارهایی اجازه دارد انجام دهد.

ساختار کلی:

GRANT privilege ON database.table TO 'username'@'host';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مثال دسترسی به یک دیتابیس خاص:

GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.* TO 'aliuser'@'localhost';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

یعنی این کاربر فقط روی دیتابیس mydatabase می‌تواند:

  • داده بخواند (SELECT)

  • اضافه کند (INSERT)

  • ویرایش کند (UPDATE)

  • حذف کند (DELETE)


دادن دسترسی کامل (با احتیاط!)

GRANT ALL PRIVILEGES ON *.* TO 'aliuser'@'localhost' WITH GRANT OPTION;
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

این کار تقریباً کاربر را شبیه root می‌کند. برای محیط‌های واقعی و امنیتی، اصلاً توصیه نمی‌شود مگر کاملاً آگاه باشید چه می‌کنید.


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

SHOW GRANTS FOR 'aliuser'@'localhost';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

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

REVOKE INSERT, UPDATE ON mydatabase.* FROM 'aliuser'@'localhost';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

حذف کامل یک کاربر

DROP USER 'aliuser'@'localhost';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

توجه: اگر کاربر در حال اتصال باشد، ابتدا باید اتصالش قطع شود.


ورود با کاربر جدید

mysql -u aliuser -p
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

خطاهای رایج

1️⃣ خطای Access denied

معمولاً به دلیل:

  • اشتباه بودن پسورد

  • نداشتن دسترسی کافی

  • اشتباه بودن host

بررسی دسترسی:

SHOW GRANTS FOR 'aliuser'@'localhost';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

2️⃣ عدم اتصال از راه دور

باید کاربر را با host مناسب بسازید:

2 خط
CREATE USER 'aliuser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'aliuser'@'%';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

همچنین پورت 3306 و تنظیمات bind-address در MySQL باید درست باشند.


3️⃣ خطای Error 1396 (کاربر وجود دارد)

یعنی کاربر از قبل ساخته شده:

2 خط
DROP USER 'aliuser'@'localhost';
CREATE USER 'aliuser'@'localhost' IDENTIFIED BY 'password';
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

جمع‌بندی

مدیریت کاربران در MySQL یکی از پایه‌ای‌ترین و مهم‌ترین بخش‌های امنیت دیتابیس است. همیشه:

  • از root برای برنامه‌ها استفاده نکنید

  • اصل حداقل دسترسی لازم را رعایت کنید

  • دسترسی‌ها را دوره‌ای بررسی کنید

این کار ساده، جلوی خیلی از فاجعه‌های دیتابیسی آینده را می‌گیرد. سرورها مثل بچه‌ها هستند، اگر کنترل نشن، خرابکاری می‌کنند.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS