آموزش ساخت یوزر جدید در MySQL و دادن دسترسی به ان ها
MySQL یکی از محبوبترین سیستمهای مدیریت پایگاههای داده رابطهای و ابزاری قدرتمند برای ذخیرهسازی و مدیریت دادههاست. یکی از مهمترین جنبههای کار با پایگاه داده MySQL، مدیریت کاربران و سطوح دسترسی آنهاست. بهطور پیشفرض، MySQL یک کاربر root ایجاد میکند که دارای دسترسی کامل به تمام پایگاههای داده و جدولهاست. با این حال، استفاده از این کاربر برای کارهای روزمره توصیه نمیشود، زیرا خطرات امنیتی به همراه دارد. در عوض، بهتر است برای هر کاربر، حسابهای جداگانه با دسترسیهای محدود و متناسب با نیازهایش ایجاد کنید. در این مقاله، بهطور گامبهگام یاد میگیرید که چگونه اقدام به ساخت یک یوزر جدید در MySQL کنید، دسترسیهای لازم را به آن بدهید و در صورت نیاز، این دسترسیها را مدیریت یا لغو نمایید. این مراحل به شما کمک میکنند تا امنیت و کارایی پایگاهداده خود را بهبود بخشید.
قبل از این که شروع کنیم، بیایید یک یادآوری کوتاه داشته باشیم که MySQL چیست. MySQL یک سیستم مدیریت پایگاه داده رابطهای و متنباز است که معمولاً بهعنوان بخشی از پشته LAMP (که مخفف Linux، Apache، MySQL و PHP است) استفاده میشود و در حال حاضر، محبوبترین پایگاه داده متنباز در جهان به شمار میرود. حالا برای ساخت یوزر در MySQL به چه چیزهایی نیاز داریم و باید از کجا شروع کنیم؟
فهرست مطالب
پیشنیازهای ساخت یوزر در MySQL
برای دنبال کردن این راهنما، باید به یک پایگاه داده MySQL دسترسی داشته باشید. این راهنما فرض میکند که پایگاه داده شما روی یک سرور مجازی (VPS) با سیستم عامل Ubuntu 20.04 نصب شده است، اما اصولی که در اینجا توضیح داده میشود، تقریباً در هر محیطی که به پایگاه داده دسترسی داشته باشد، قابل اجرا است.
اگر به یک پایگاه داده MySQL دسترسی ندارید و میخواهید آن را خودتان راهاندازی کنید، توصیه میکنیم این کار را قبل از انجام این مراحل انجام دهید. باز هم تأکید میکنیم که بدون توجه به سیستم عامل سرور شما، روشهای ساخت یوزر جدید و دادن دسترسیها در MySQL تقریباً یکسان است.
همچنین شما میتوانید یک پایگاه داده MySQL مدیریتشده توسط ارائهدهندههای ابری ایجاد کنید. در نهایت قبل از شروع کار توجه داشته باشید که در این راهنما، بخشهایی از دستورات، نیاز به تغییر یا سفارشیسازی دارند.
ساخت یک یوزر جدید در MySQL
همانطور که گفتیم، پس از نصب MySQL، یک حساب کاربری به نام root ایجاد میشود که میتوانید از آن برای مدیریت پایگاه داده خود استفاده کنید. در این بخش، نحوه ساخت یک یوزر جدید و دادن دسترسیهای لازم به آن را با استفاده از یوزر روت MySQL توضیح میدهیم.
در سیستمهای اوبونتو که از MySQL نسخه 5.7 (یا بالاتر) استفاده میکنند، یوزر root MySQL بهطور پیشفرض از طریق پلاگین auth_socket احراز هویت میشود، نه با استفاده از رمز عبور. این پلاگین چک میکند که نام کاربری سیستم عاملی که دستور MySQL را اجرا میکند، با نام کاربری MySQL مشخصشده در دستور مطابقت داشته باشد. این یعنی برای دسترسی به یوزر root MySQL، باید دستور mysql
را با sudo
اجرا کنید تا با دسترسی کاربر root اوبونتو وارد شوید:
sudo mysql
توجه: اگر کاربر root MySQL شما برای احراز هویت با رمز عبور تنظیم شده است، باید از دستور زیر برای دسترسی به محیط MySQL استفاده کنید. این دستور، کلاینت MySQL را با دسترسی کاربر عادی اجرا میکند و تنها در صورت وارد کردن رمز عبور صحیح، دسترسی مدیریتی به پایگاه داده خواهید داشت:
mysql -u root -p
پس از دسترسی به محیط MySQL، میتوانید با دستور CREATE USER
اقدام به ساخت یک یوزر جدید کنید. ساختار کلی این دستور به شکل زیر است:
CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
بعد از CREATE USER
، نام کاربری را مشخص میکنید. سپس یک علامت @
و نام هاستی که کاربر از طریق آن متصل میشود را وارد میکنید. اگر فقط قصد دارید از طریق سرور اوبونتو بهصورت لوکال به این کاربر دسترسی داشته باشید، میتوانید از localhost
استفاده کنید.
نکته: قرار دادن نام کاربری و هاست درون ('
) همیشه ضروری نیست، اما میتواند از بروز خطا جلوگیری کند.
در انتخاب پلاگین احراز هویت، چندین گزینه دارید. پلاگین auth_socket که قبلاً ذکر شد، میتواند گزینه مناسبی باشد، زیرا امنیت بالایی را بدون نیاز به وارد کردن رمز عبور فراهم میکند. اما این پلاگین از اتصالهای خارجی (ریموت) جلوگیری میکند، که ممکن است در تعامل برنامههای خارجی با MySQL ایجاد مشکل کند.
بهعنوان یک جایگزین، میتوانید بخش WITH authentication_plugin
را حذف کنید تا کاربر با پلاگین پیشفرض MySQL، یعنی caching_sha2_password، احراز هویت شود. منابع MySQL این پلاگین را بهدلیل ویژگیهای امنیتی قویاش، برای کاربرانی که میخواهند با رمز عبور وارد شوند، توصیه میکند.
برای ساخت یک یوزر در MySQL که با caching_sha2_password احراز هویت میشود، دستور زیر را اجرا کنید. حتماً sammy
را به نام کاربری مورد نظر و password
را به یک رمز عبور قوی تغییر دهید:
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
توجه: یک مشکل شناختهشده در برخی نسخههای PHP وجود دارد که با پلاگین caching_sha2_password سازگار نیست. اگر قصد دارید از این پایگاه داده با یک برنامه PHP (مثل phpMyAdmin) استفاده کنید، بهتر است کاربری ایجاد کنید که با پلاگین قدیمیتر اما همچنان امن، یعنی mysql_native_password، احراز هویت شود:
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
اگر مطمئن نیستید، میتوانید ابتدا یوزر با پلاگین caching_sha2_password ایجاد کنید و سپس آن را با دستور زیر تغییر دهید:
ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
پس از ساخت یوزر جدید در MySQL، میتوانید دسترسیهای لازم را به او بدهید.
دادن دسترسیها به یوزر
ساختار کلی دستورِ دادن دسترسیها (Privileges) به یوزر در MySQL به شکل زیر است:
GRANT PRIVILEGE ON database.table TO 'username'@'host';
در این دستور، مقدار PRIVILEGE
مشخص میکند که کاربر مجاز به انجام چه اقداماتی روی پایگاه داده و جدول مشخصشده است. شما میتوانید چندین دسترسی را در یک دستور، با استفاده از کاما (,
) از هم جدا کنید و به کاربر اعطا نمایید. همچنین میتوانید با استفاده از کاراکتر ستاره (*
) بهجای نام پایگاه داده و جدول، دسترسیهای Global به کاربر بدهید. در SQL، ستاره بهعنوان یک کاراکتر ویژه برای نشاندادن «همه» پایگاههای داده یا جدولها استفاده میشود.
بهعنوان مثال، دستور زیر دسترسیهای Global برای ایجاد (CREATE
)، تغییر (ALTER
) و حذف (DROP
) پایگاههای داده، جدولها و کاربران را به یوزر میدهد. همچنین امکان درج (INSERT
)، بهروزرسانی (UPDATE
) و حذف (DELETE
) دادهها از هر جدول روی سرور، امکان پرسوجو دادهها با SELECT
، ایجاد کلیدهای خارجی با کلیدواژه REFERENCES
و انجام عملیات FLUSH
با دسترسی RELOAD
را فراهم میکند. با این حال، بهتر است فقط دسترسیهای ضروری را به کاربر بدهید و دسترسیها را بر اساس نیاز هر یوزر تنظیم کنید.
میتوانید لیست کامل دسترسیهای موجود را در منابع رسمی MySQL مشاهده کنید. برای دادن این دسترسیها به یوزر خود، دستور زیر را اجرا کنید و بهجای sammy
، نام کاربری MySQL خود را وارد نمایید:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
توجه داشته باشید که این دستور شامل WITH GRANT OPTION
است. این بخش به کاربر MySQL شما اجازه میدهد تا هر دسترسی که خودش دارد را به کاربران دیگر نیز اعطا کند.
هشدار: برخی کاربران ممکن است بخواهند دسترسی ALL PRIVILEGES
را به کاربر MySQL خود بدهند. این دسترسی، امتیازات گستردهای شبیه به کاربر root فراهم میکند، مانند دستور زیر:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
چنین دسترسیهای گستردهای را نباید بهراحتی به هر یوزری داد، زیرا هر کسی که به این کاربر MySQL دسترسی داشته باشد، کنترل کامل روی همه پایگاههای داده سرور خواهد داشت.
بسیاری از راهنماها پیشنهاد میکنند که بلافاصله پس از دستورات CREATE USER
یا GRANT
، دستور FLUSH PRIVILEGES
را اجرا کنید تا جداول دسترسیها (Grant Tables) مجدداً بارگذاری شوند و تغییرات اعمال شوند:
FLUSH PRIVILEGES;
با این حال، بر اساس منابع رسمی MySQL، زمانی که جداول دسترسیها بهطور غیرمستقیم با دستورات مدیریت حسابها (مانند GRANT
) تغییر میکنند، پایگاه داده بهطور خودکار این جداول را در حافظه بارگذاری میکند. بنابراین، اجرای دستور FLUSH PRIVILEGES
در این حالت ضروری نیست. البته اجرای آن هیچ تأثیر منفی روی سیستم نخواهد داشت.
اگر نیاز به لغو دسترسی داشتید، ساختار دستور تقریباً شبیه به دادن دسترسی است:
REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
توجه کنید که در لغو دسترسیها، بهجای TO
از FROM
استفاده میشود.
برای بررسی دسترسیهای فعلی یک کاربر، میتوانید از دستور SHOW GRANTS
استفاده کنید:
SHOW GRANTS FOR 'username'@'host';
پس از ساخت یوزر در MySQL و دادن دسترسیهای لازم، میتوانید از محیط MySQL خارج شوید:
exit
در آینده، برای ورود بهعنوان یوزر جدید MySQL خود، از دستور زیر استفاده کنید:
mysql -u sammy -p
استفاده از -p
در دستور فوق باعث میشود که کلاینت MySQL از شما رمز عبور کاربر را برای احراز هویت درخواست کند.
نتیجهگیری
با دنبال کردن این آموزش، یاد گرفتید که چگونه اقدام به ساخت یوزر های جدید در MySQL کنید و دسترسیهای متنوعی به آنها بدهید. در پایان امیدواریم این مطلب برایتان مفید بوده باشد، همچنین باید بدانید که مدیریت یوزر ها و تغییر تنظیمات در یک پایگاه داده، کاری تخصصی است و نیازمند دانشی تخصصی است. اگر به کمکی حرفهای برای این کار نیاز دارید، میتوانید اقدام به دریافت خدمات پشتیبانی دیتابیس کنید.