learn

ساخت کاربر MySQL و اعطای دسترسی محدود به یک دیتابیس

نمونه صحیح CREATE USER و GRANT در MySQL 8.4؛ با حساب محلی، مجوزهای محدود، آزمون اتصال و نکات ضروری برای اتصال از سرور دیگر.

برای ساخت کاربر MySQL، حساب را با CREATE USER ایجاد کنید و سپس با GRANT فقط مجوزهای لازم را به دیتابیس موردنظر بدهید. انتخاب localhost به جای دسترسی عمومی، و جداکردن حساب برنامه از حساب مدیر، دو تصمیم مهم در همین مرحله‌اند. این راهنما یک حساب برنامه محلی می‌سازد؛ تنظیمات آن را بدون بررسی روی اتصال راه‌دور تعمیم ندهید.

پیش‌نیاز و نام‌های نمونه

دستورهای زیر برای MySQL 8.4 و اجرای مدیریتی مجاز هستند. site_db نام نمونه دیتابیس و app_user نام نمونه حساب است. اگر دیتابیس از قبل وجود دارد، آن را دوباره نسازید و ابتدا مالکیت و کاربردش را بررسی کنید. در هاست اشتراکی، ابزار MySQL Databases یا Database Wizard ممکن است روش مجاز مدیریت باشد و نام حساب‌ها پیشوند اجباری داشته باشد.

۱. ساخت دیتابیس و حساب محلی

CREATE DATABASE site_db CHARACTER SET utf8mb4;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'REPLACE_WITH_A_UNIQUE_SECRET';

رمز نمونه نباید در محیط واقعی باقی بماند. تعیین نام authentication_plugin دلخواه یا کپی‌کردن یک placeholder، تنظیم معتبر احراز هویت نیست. برای اتصال‌های قدیمی، به‌جای تحمیل افزونه منقضی، سازگاری درایور برنامه با MySQL را بررسی کنید.

۲. اعطای دسترسی متناسب با برنامه

GRANT SELECT, INSERT, UPDATE, DELETE ON site_db.* TO 'app_user'@'localhost';
SHOW GRANTS FOR 'app_user'@'localhost';

این نمونه برای عملیات عادی خواندن و نوشتن داده است، نه نصب همه CMSها. اگر برنامه هنگام نصب یا ارتقا جدول می‌سازد، مجوزهای ساختاری موردنیاز را طبق مستندات همان برنامه و فقط روی همین دیتابیس اضافه کنید. WITH GRANT OPTION و دسترسی روی *.* برای یک برنامه عادی لازم نیست.

۳. آزمون با حسابی که ساخته‌اید

mysql -u app_user -p site_db

پس از اتصال، هویت و مجوز را ببینید:

SELECT CURRENT_USER();
SHOW GRANTS;

آزمون باید از همان محیطی انجام شود که برنامه متصل می‌شود. localhost ممکن است از socket استفاده کند و 127.0.0.1 اتصال TCP ایجاد کند؛ موفقیت یکی، نتیجه دیگری را تضمین نمی‌کند. رمز را در فایل عمومی، URL یا تاریخچه دستور ذخیره نکنید.

اگر برنامه روی سرور دیگری است

در حساب MySQL، host منبعِ مجاز اتصال را مشخص می‌کند، نه آدرس مقصد دیتابیس. به جای %، آدرس یا محدوده لازم را با نظر مدیر شبکه محدود کنید. علاوه بر حساب، listener، فایروال و TLS نیز باید متناسب تنظیم شوند. برای یک خطای اتصال، پورت دیتابیس را بی‌قید به کل اینترنت باز نکنید.

رفع خطا و بازگشت

  • اگر حساب وجود دارد، CREATE USER را تکرار نکنید؛ تعریف قبلی را بررسی و در صورت نیاز با ALTER USER اصلاح کنید.
  • خطای مجوز را با نام دیتابیس و حساب واقعی تطبیق دهید؛ افزایش دسترسی باید دلیل مشخص داشته باشد.
  • پیش از حذف حساب آزمایشی، مطمئن شوید برنامه یا job دیگری از آن استفاده نمی‌کند. حذف حساب و حذف دیتابیس دو عملیات مستقل‌اند.

مطالعه مرتبط

منابع و مستندات

بازبینی محتوا و منابع: ۲۶ مهر ۱۴۰۵. دستورهای نمونه برای محیط مشخص‌شده‌اند؛ پیش از استفاده روی سرویس عملیاتی، سازگاری محیط و نسخه پشتیبان را بررسی کنید.

مطالب مرتبط

ارسال نظر

فهرست مطالب