MySQL یک سیستم مدیریت پایگاه داده رابطه ای منبع باز است. معمولاً به عنوان بخشی از پشته LAMP (که مخفف لینوکس، آپاچی، MySQL و PHP است) استفاده میشود و در زمان نوشتن این مقاله، محبوبترین پایگاه داده منبع باز در جهان است.
در این آموزش نحوه ایجاد یک کاربر MySQL جدید و اعطای دسترسی های لازم برای انجام انواع اقدامات را به آنها توضیح می دهیم. برای پیروی از این آموزش، باید به پایگاه داده MySQL دسترسی داشته باشید. این راهنما فرض میکند که این پایگاه داده بر روی یک سرور اختصاصی مجازی که اوبونتو 20.04 را اجرا میکند، نصب شده است.
اگر به پایگاه داده MySQL دسترسی ندارید و می خواهید خودتان آن را راه اندازی کنید، می توانید آموزش های ما را در مورد نحوه نصب MySQL دنبال کنید. صرف نظر از سیستم عامل اصلی سرور شما، روشهای ایجاد یک کاربر MySQL جدید و اعطای مجوز به آنها معمولاً یکسان خواهد بود.
ایجاد یک کاربر جدید
پس از نصب، MySQL یک حساب کاربری root ایجاد می کند که می توانید از آن برای مدیریت پایگاه داده خود استفاده کنید. این کاربر دارای امتیازات کامل بر سرور MySQL است، به این معنی که کنترل کاملی بر هر پایگاه داده، جدول، کاربر و غیره دارد. به همین دلیل، بهتر است از استفاده، از این حساب خارج از عملکردهای اداری خودداری کنید. در این مرحله نحوه استفاده از کاربر روت MySQL برای ایجاد یک حساب کاربری جدید و اعطای امتیازات به آن توضیح داده شده است.
در سیستمهای اوبونتو که MySQL 5.7 (و نسخههای بعدی) را اجرا میکنند، کاربر روت MySQL بهطور پیشفرض و نه با رمز عبور، با استفاده از افزونه auth_socket احراز هویت میشود. این افزونه نیاز دارد که نام کاربر سیستم عاملی که کلاینت MySQL را فراخوانی می کند با نام کاربر MySQL مشخص شده در دستور مطابقت داشته باشد. بطوری که شما باید دستور mysql را با sudo پیش ببرید تا آن را با امتیازات کاربر ریشه اوبونتو فراخوانی کنید و به کاربر ریشه MySQL دسترسی پیدا کنید:
sudo mysql
توجه: اگر کاربر روت 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 به دلیل ویژگی های امنیتی قوی، این افزونه را برای کاربرانی که می خواهند با رمز عبور وارد شوند، توصیه می کند.
برای ایجاد کاربری که با caching_sha2_password احراز هویت می کند، دستور زیر را اجرا کنید. مطمئن شوید که sammy را به نام کاربری و رمز عبور دلخواه خود به یک رمز عبور قوی انتخاب کنید:
;'CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password
پس از ایجاد کاربر جدید خود، می توانید امتیازات مناسب را به آنها بدهید.
اعطای دسترسی کاربر
نحو کلی برای اعطای امتیازات کاربر به شرح زیر است:
;'GRANT PRIVILEGE ON database.table TO 'username'@'host
مقدار PRIVILEGE در این کد، مشخص می کند که کاربر مجاز است چه اقداماتی را در پایگاه داده و جدول مشخص شده انجام دهد. میتوانید با جدا کردن هر کدام با کاما، چندین امتیاز را در یک دستور به یک کاربر اختصاص دهید. همچنین می توانید با وارد کردن ستاره (*) به جای پایگاه داده و نام جدول، امتیازات globall را به کاربر اعطا کنید. در SQL، ستاره ها کاراکترهای خاصی هستند که برای نشان دادن "همه" پایگاه داده ها یا جداول استفاده می شوند.
برای مثال، دستور زیر به کاربر، امتیازات globall برای ایجاد، تغییر و حذف کردن پایگاههای داده، جداول و کاربران و همچنین اضافه، بهروزرسانی و حذف دادهها از هر جدول روی سرور را میدهد. همچنین به کاربر این امکان را می دهد که کلیدهای خارجی را با کلمه کلیدی REFERENCES ایجاد کند و عملیات FLUSH را با امتیاز RELOAD انجام دهد. با این حال، شما فقط باید به کاربران مجوزهای مورد نیاز خود را بدهید، بنابراین در صورت لزوم می توانید امتیازات کاربر خود را تنظیم کنید.
این کد GRANT را اجرا کنید، و sammy را با نام کاربری MySQL خود جایگزین کنید تا این امتیازات را به کاربر خود اعطا کنید:
;GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION
توجه داشته باشید که این statement شامل WITH GRANT OPTION نیز می باشد. این به کاربر MySQL شما اجازه میدهد هر گونه مجوزی را که دارد، به سایر کاربران سیستم نیز اعطا کند.
بسیاری از آموزش ها پیشنهاد میکنند که دستور FLUSH PRIVILEGES را بلافاصله پس از یک عبارت CREATE USER یا GRANT اجرا کنید تا جداول اعطا را دوباره بارگیری کنید تا اطمینان حاصل شود که امتیازات جدید اعمال میشوند:
;FLUSH PRIVILEGES
با این حال، طبق اسناد رسمی MySQL، هنگامی که جداول را به طور غیرمستقیم با یک statement مدیریت حساب مانند GRANT تغییر می دهید، پایگاه داده جداول را بلافاصله در حافظه بارگذاری می کند، به این معنی که دستور FLUSH PRIVILEGES در مورد ما ضروری نیست. از طرفی اجرای آن هیچ تاثیر منفی روی سیستم نخواهد داشت.
اگر نیاز به لغو مجوز دارید، ساختار تقریباً مشابه اعطای مجوز است:
;'REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host
توجه داشته باشید که هنگام لغو مجوزها، سینتکس ایجاب می کند که به جای TO که هنگام اعطای مجوزها استفاده می کردید، از FROM استفاده کنید.
با اجرای دستور SHOW GRANTS می توانید مجوزهای فعلی کاربر را بررسی کنید:
;'SHOW GRANTS FOR 'username'@'host
همانطور که می توانید پایگاه داده ها را با DROP حذف کنید، می توانید از DROP برای حذف یک کاربر استفاده کنید:
;'DROP USER 'username'@'localhost
پس از ایجاد کاربر MySQL و دادن امتیازات به آنها، می توانید از کلاینت MySQL خارج شوید:
exit
در آینده، برای ورود به عنوان کاربر MySQL جدید، از دستوری مانند زیر استفاده خواهید کرد:
mysql -u sammy -p
p- باعث میشود که کلاینت MySQL از شما رمز عبور کاربر MySQL را برای احراز هویت درخواست کند.
با دنبال کردن این آموزش، یاد گرفتید که چگونه کاربران جدید اضافه کنید و مجوزهای مختلفی را در پایگاه داده MySQL به آنها بدهید. امیدواریم این مقاله آموزشی برای شما مفید بوده باشد، برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.
آموزش های مرتبط: