MySQL یکی از محبوبترین سیستمهای مدیریت پایگاه داده رابطهای (RDBMS) متنباز دنیاست و معمولاً در کنار Linux، Apache و PHP به عنوان بخشی از استک معروف LAMP استفاده میشود.
یکی از مهمترین کارهای امنیتی در MySQL، ساخت کاربرهای جداگانه و دادن دسترسی محدود به هر کدام است، نه استفاده مستقیم از کاربر root برای همه کارها.
در این آموزش یاد میگیرید چطور:
-
کاربر جدید در MySQL بسازید
-
سطح دسترسی مشخص به او بدهید
-
دسترسیها را بررسی یا حذف کنید
-
خطاهای رایج مربوط به کاربران را برطرف کنید
پیشنیازها
برای انجام مراحل این آموزش باید:
-
به یک سرور دارای MySQL دسترسی داشته باشید
-
دسترسی مدیریتی (root یا sudo) روی سیستم داشته باشید
این آموزش معمولاً با Ubuntu انجام میشود، اما دستورات MySQL روی سایر توزیعها هم مشابه هستند.
ساخت کاربر جدید در MySQL
بعد از نصب MySQL، یک کاربر مدیریتی به نام root ساخته میشود که دسترسی کامل به کل سرور پایگاه داده دارد. استفاده دائمی از این کاربر برای برنامهها کار اشتباهی است. بهتر است برای هر پروژه یا اپلیکیشن، کاربر جدا بسازید.
ورود به MySQL به عنوان root
در اکثر سیستمهای Ubuntu:
اگر root با پسورد تنظیم شده باشد:
دستور ساخت کاربر
ساختار کلی:
مثال:
توضیح بخشها:
| بخش | توضیح |
|---|---|
| username | نام کاربر دیتابیس |
| host | محلی که کاربر اجازه اتصال دارد (مثلاً localhost یا %) |
| password | رمز عبور کاربر |
اگر از % استفاده کنید، کاربر میتواند از هر IP وصل شود.
پلاگینهای احراز هویت در MySQL
MySQL چند روش برای احراز هویت دارد:
| پلاگین | امنیت | کاربرد |
|---|---|---|
caching_sha2_password | بسیار قوی | پیشفرض MySQL 8 و مناسب برنامههای جدید |
mysql_native_password | خوب | سازگار با برنامههای قدیمی و برخی نسخههای PHP |
auth_socket | بر پایه کاربر سیستم | فقط اتصال محلی بدون پسورد |
مثال استفاده از پلاگین خاص:
دادن دسترسی به کاربر (GRANT)
بعد از ساخت کاربر، باید مشخص کنیم چه کارهایی اجازه دارد انجام دهد.
ساختار کلی:
مثال دسترسی به یک دیتابیس خاص:
یعنی این کاربر فقط روی دیتابیس mydatabase میتواند:
-
داده بخواند (SELECT)
-
اضافه کند (INSERT)
-
ویرایش کند (UPDATE)
-
حذف کند (DELETE)
دادن دسترسی کامل (با احتیاط!)
این کار تقریباً کاربر را شبیه root میکند. برای محیطهای واقعی و امنیتی، اصلاً توصیه نمیشود مگر کاملاً آگاه باشید چه میکنید.
بررسی دسترسیهای یک کاربر
حذف دسترسی از کاربر
حذف کامل یک کاربر
توجه: اگر کاربر در حال اتصال باشد، ابتدا باید اتصالش قطع شود.
ورود با کاربر جدید
خطاهای رایج
1️⃣ خطای Access denied
معمولاً به دلیل:
-
اشتباه بودن پسورد
-
نداشتن دسترسی کافی
-
اشتباه بودن host
بررسی دسترسی:
2️⃣ عدم اتصال از راه دور
باید کاربر را با host مناسب بسازید:
همچنین پورت 3306 و تنظیمات bind-address در MySQL باید درست باشند.
3️⃣ خطای Error 1396 (کاربر وجود دارد)
یعنی کاربر از قبل ساخته شده:
جمعبندی
مدیریت کاربران در MySQL یکی از پایهایترین و مهمترین بخشهای امنیت دیتابیس است. همیشه:
-
از root برای برنامهها استفاده نکنید
-
اصل حداقل دسترسی لازم را رعایت کنید
-
دسترسیها را دورهای بررسی کنید
این کار ساده، جلوی خیلی از فاجعههای دیتابیسی آینده را میگیرد. سرورها مثل بچهها هستند، اگر کنترل نشن، خرابکاری میکنند.

