اگر از پایگاه داده MySQL برای ذخیرهسازی اطلاعات خود استفاده میکنید، لازم است نحوه ایجاد کاربر جدید در MySQL را بیاموزید تا بتوانید در صورت لزوم دسترسیهای لازم را برای کاربران خود ایجاد نمایید و حتی از اون سلب کنید.
در این مطلب قصد داریم شما را با نحوه ایجاد کاربر در MySQL یکی از محبوبترین سیستمهای مدیریت پایگاهداده آشنا نماییم، اما قبل از آن به این موضوع خواهیم پرداخت که دیتابیس چیست.
Database یا پایگاه داده مجموعهای سازمان یافته از اطلاعات میباشد که معمولاً به صورت الکترونیکی برای دسترسی آسان، مدیریت و بروزرسانی در یک سیستم کامپیوتری ذخیره میشوند.
دیتابیس مجموعهای از سوابق اطلاعات مانند معاملات فروش، دادههای مشتری، اطلاعات مالی و محصول میباشند که توسط یک سیستم مدیریت پایگاه داده (DBMS) برای نگهداری حجم وسیعی از اطلاعات در یک شبکه کنترل میشوند.
سیستم مدیریت پایگاه داده نظارت و کنترل پایگاههای داده را تسهیل نموده و انواع عملیات مانند نظارت بر عملکرد، تنظیم و پشتیبانگیری و بازیابی را امکانپذیر میسازد.
MySQL یک سیستم مدیریت پایگاه داده رابطهای (RDBMS) منبع باز است که توسط Oracle توسعه یافته است.
بانک اطلاعاتی MySQL یکی از مولفههای اصلی مجموعه نرمافزارهای LAMP محسوب میشود که شامل لینوکس،Apache MySQL و PHP است.
بیشتر بدانید : نصب آخرین نسخه php در لینوکس
MySQL برای ساخت و نگهداری برنامههای کاربردی وب مشتری و سرویسهای قدرتمند B2B مبتنیبر دادهها، در بسیاری از محبوبترین LAMP نرمافزار جداییناپذیر است.
ماهیت منبع باز، پایداری و مجموعه ویژگیهای غنی آن، همراه با توسعه و پشتیبانی مداوم اوراکل، به این معنی است که سازمانهای حیاتی اینترنت مانند فیس بوک، فلیکر، توییتر، ویکی پدیا و یوتیوب همگی از پشتیبانی MySQL بهرهمند میباشند.
سرور MySQL، امکان ایجاد حسابهای کاربری متعدد و اعطای امتیازات مناسب را فراهم میآورد تا کاربران بتوانند به پایگاههای داده دسترسی داشته باشند و آنها را مدیریت کنند.
پیشنیاز ایجاد کاربر جدید در MySQL
لازمه پیروی از این راهنما، نصب MySQL در سرور مجازی میباشد. در این مقاله فرض میکنیم که این پایگاه داده بر روی سرور مجازی که اوبونتو را اجرا میکند، نصب شده است.
قبل از پرداختن به این آموزش، میتوانید برای تست و آزمایش ایجاد کاربر جدید در MySQL ، تنها با چند کلیک سرور مجازی رایگان خود را فعال نمایید.
در کل، صرف نظر از سیستم عامل اصلی سرور شما، روشهای ایجاد کاربر جدید MySQL و اعطای مجوز به آنها معمولاً یکسان خواهد بود.
ایجاد کاربر جدید در MySQL
پس از نصب این پایگاه داده محبوب، MySQL یک حساب کاربری root ایجاد میکند که میتوانید با استفاده از این دسترسی دیتابیس خود آن را مدیریت نمایید.
دسترسی root دارای امتیازات کامل بر سرور MySQL است و به واسطه آن میتوانید کنترل کاملی بر هر پایگاه داده، جدول، کاربر و…. داشته باشید. به همین دلیل، بهتر است از استفاده این حساب خارج از عملکردهای اداری خودداری کنید.
در ادامه شما را با نحوه ایجاد یک حساب کاربری جدید و اعطای امتیازات به آن با استفاده از دسترسی روت MySQL توضیح خواهیم داد.
سیستم عامل اوبونتو تقریبا تمامی نسخههای MySQL را اجرا میکند، در کاربر root این پایگاه داده با استفاده از افزونه socket auth، بدون هیچگونه رمز عبوری احراز هویت میشود.
برای استفاده از این افزونه، لازم است نام کاربر سیستم عاملی که کلاینت MySQL را فراخوانی میکند با نام کاربر MySQL مشخص شده در دستور مطابقت داشته باشد.
پس لازم است برای دسترسی به کاربر root، دستور MySQL را با sudo اجرا کنید تا بتوانید MySQL را با دسترسیهایی که برای کاربر روت اوبونتو دارد، فراخوانی نمایید.
sudo mysql
توجه داشته باشید درصورتی که کاربر روت MySQL شما، برای احراز هویت با رمز عبور پیکربندی شده باشد، باید از دستور دیگری برای دسترسی به دیتابیس خود استفاده نمایید تا بتوانید به MySQL با دسترسی روت وارد شوید.
با اجرای دستور زیر، دسترسی شما فقط با امتیازات و دسترسیهای کاربر معمولی اجرا خواهد شد.
mysql -u root -p
پس از دسترسی به MySQL، میتوانید با استفاده از عبارت CREATE USER کاربر جدیدی را به دیتابیس خود اضافه نمایید.
CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password'
برای ایجاد کاربر جدید در MySQL لازم است مطابق دستور، بعد از CREATE USER یک نام کاربری برای خود مشخص کنید و بلافاصله علامت @ و سپس نام هاستی را که قصد دارید کاربر به آن متصل شود را ذکر نمایید.
درصورتی که میخواهید کاربر به سرور اوبونتو دسترسی داشته باشد، میتوانید در دستور بالا به جای hostname، localhost را وارد نمایید تا کاربر قادر به اتصال به سرور دیتابیس MySQL تنها از طریق localhost باشد.
قرار دادن نام کاربری و هاست همیشه ضروری نیست، اما انجام این عمل میتواند به جلوگیری از خطاها کمک کند.
احراز هویت کاربر
گزینههای مختلفی برای انتخاب افزونه احراز هویت کاربر در دیتابیس وجود دارد، اما افزونه auth_socket امنیت بالاتری را بدون نیاز به وارد کردن رمز عبور برای دسترسی به پایگاه داده فراهم میآورد اما از اتصالات ریموت جلوگیری میکند.
عدم دسترسی به اتصال روت میتواند در مواقعی که برنامهها نیاز به تعامل با MySQL دارند، شرایط را پیچیدهای را رقم زند.
یکی از برنامههای جایگزین برای کاربران بدون استفاده از WITH authentication_plugin، احراز هویت با افزونه پیشفرض MySQL بنام caching_sha2_password میباشد.
مستندات MySQL این افزونه را به کاربرانی که میخواهند با رمز عبور وارد شوند و امنیت بالاتری را برای سیستم خود رقم بزنند، توصیه میشود.
با اجرای دستور زیر میتوانید با caching_sha2_password احراز هویت ایمنتری را برای کاربران ایجاد نمایید.
لازم است در این دستور ‘sammy’ را به نام کاربری و ‘password’ را به یک رمز عبور قوی تغییر دهید.
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password'
یک مشکل شناخته شده در برخی از نسخههای PHP وجود دارد که باعث ایجاد مشکل در caching_sha2_password میشود و نمیتوانید با استفاده از آن احراز هویت نمایید.
درصورتی که میخواهید از MySQL در یکی از برنامههای PHP برای مثال phpMyAdmin استفاده کنید، میتوانید با استفاده از افزونه قدیمیتر mysql_native_password برای کاربران ایجاد نمایید.
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
اگر مطمئن نیستید که همیشه میتوانید کاربری ایجاد کنید که با caching_sha2_plugin احراز هویت نماید، از طریق دستور زیر اقدام نمایید.
ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
پس از ایجاد کاربر جدید در MySQL، میتوانید دسترسی های لازم را برای آنها فعال نمایید.
اعطای مجوزها به کاربران جدید
سطوح دسترسی بسیاری وجود دارد که میتوان با اجرای دستور، مجوز آن را به کاربر اختصاص داد. به عنوان مثال:
ALL PRIVILEGES : اعطای تمامی دسترسیها به یک کاربر
DROP : اعطای دسترسی حذف دیتابیس و جداول
DELETE : اعطای دسترسی حذف ردیفها از یک جدول خاص
INSERT : اعطای دسترسی وارد کردن اطلاعات به ردیفها به یک جدول خاص
UPDATE : اعطای دسترسی آپدیت ردیفهای جدول
CREATE : اعطای دسترسی ایجاد دیتابیس و تیبلها
SELECT : اعطای دسترسی خواندن اطلاعات یک دیتابیس
با استفاده از دستور زیر میتوانید برای اعطای دسترسی خاص به یک کاربر اقدام نمایید.
mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host'
PRIVILEGE در این دستور نشان دهنده این مسئله میباشد که کاربر مجاز به انجام چه عملیاتی در پایگاه داده و جدول مشخص شده، میباشد.
درصورتی که بخواهید چندین دسترسی را به یک کاربر اختصاص دهید، میتوانید با جدا کردن هر کدام با کاما (،) این عمل را انجام دهید.
همچنین با وارد کردن ستاره (*) به جای database و table میتوانید، دسترسی و امتیازات را به صورت کامل به کاربر اعطا کنید.
در SQL، ستارهها ازجمله کاراکترهای خاصی میباشند که برای نشان دادن “همه” در پایگاه دادهها یا جداول استفاده میشوند.
بیشتر بدانید : Redis چیست
با استفاده از دستور ذکر شده میتوان به کاربران امتیازاتی برای ایجاد، تغییر، و حذف پایگاههای داده، جداول و کاربران و همچنین قدرت درج، بهروزرسانی و حذف دادهها از هر جدول بر روی سرور را داد.
همچنین به کاربر این امکان را میدهد که دادهها را با SELECT جستجو کند، کلیدهای خارجی را با کلمه کلیدی REFERENCES ایجاد نماید و عملیات FLUSH را با امتیاز RELOAD انجام دهد.
مدیران میتوانند به کاربران خود مجوزهای موردنیاز را اعطا نمایند و در صورت لزوم امتیاز جدیدی برای آنها تنطیم نمایند و حتی امتیازات قبل را سلب نمایند.
با اجرای دستور GRANT و جایگزینی نام کاربری به جای ‘sammy’ میتوانید اینگونه امتیازات را به کاربران خود اختصاصی دهید.
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'localhost' WITH GRANT OPTION
دستورات کاربردی اعطای مجوز
برای اعطای همه دسترسیها به یک کاربر برروی یک جدول خاص از یک دیتابیس دستور زیر را باید اجرا نمود.
mysql> GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost'
با اجرای دستور زیر میتوان تمامی امتیازات دیتابیس را به یک کاربر اعطا کرد.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost'
اعطای تمام سطوح دسترسی به یک کاربر برروی یک دیتابیس خاص با اجرای دستور زیر انجام میگیرد.
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost'
برای اعطای چندین سطوح دسترسی به یک کاربر برروی یک دیتابیس خاص با استفاده از دستور زیر باید عمل نمود.
mysql> GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost'
توجه داشته باشید، دستوراتی که شامل WITH GRANT OPTION میباشند، این امکان را برای کاربر MySQL فراهم میآورد تا دسترسیهای خود را به سایر کاربران اعطا نمایند.
ممکن است بخواهید به کاربر MySQL خود دسترسی های بیشتری همانند مجوزهای کاربر اصلی ارائه نمایید، در این صورت باید از دستور زیر کمک بگیرید.
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION
در اعطای این امتیاز دقت داشته باشید، زیرا در این صورت کاربر MySQL دسترسی و کنترل کاملی بر تمامی پایگاههای موجود در سرور خواهد داشت.
همچنین برای مطلع شدن از سطوح دسترسی فعلی که به یک کاربر در MySQL اختصاص داده شده است دستور زیر اجرا نمایید.
mysql> SHOW GRANTS FOR 'username'@'host'
با اجرای دستور زیر پس از اعمال دستوراتی مانند GRANT یا CREATE USER میتوانید جداول دسترسی و امتیازات را مجدد بارگیری نمایید تا اطمینان حاصل شود که امتیازات جدید اعمال میشوند:
FLUSH PRIVILEGES
اگر نیازی به اصلاح جداول کاربری دیتابیس مانند GRANT را دارید، میتوانید به صورت مستقیم این عمل را انجام دهید، زیرا دیتابیس جداول را در رم ذخیره میکند و ضرورتی در استفاده از دستور FLUSH PRIVILEGES وجود ندارد. درصورتی که نیاز به لغو این مجوز دارید میتوانید دستور زیر را اجرا نمایید.
REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host'
هنگام لغو مجوزها لازم است از FROM به جای TO که هنگام اعطای مجوزها استفاده میشد، استفاده نمایید.
همانطور که میتوانید پایگاه دادهها را با دستور DROP حذف کنید، میتوانید با استفاده از آن برای حذف یک کاربر نیز اقدام نمایید.
DROP USER 'username'@'localhost'
پس از ایجاد کاربر جدید در MySQL و اعطای امتیازات به آنها، میتوانید از حساب کاربری آن با استفاده از دستور زیر خارج شوید.
mysql> exit
کاربر جدید MySQL، با استفاده از دستور زیر میتواند وارد حساب کاربری خود شود.
mysql -u sammy -p
-p سبب میشود که کلاینت MySQL از شما رمز عبور کاربر MySQL را برای احراز هویت درخواست کند.
جمع بندی
MySQL یک سیستم مدیریت پایگاه داده رابطهای است که به طور گسترده در توسعه برنامههای وب و نرم افزارهای مختلف استفاده میشود. یکی از ویژگیهای اصلی MySQL قابلیت مدیریت کاربران مختلف است. با ایجاد کاربر جدید در MySQL، میتوانید به کاربران مختلف سطوح دسترسی متفاوتی را اختصاص دهید و محدودیتهای لازم برای امنیت پایگاه داده را اعمال کنید.
همانطور که میدانید MySQL یکی از مشهورترین سیستمهای مدیریت دیتابیس است که قابلیت اجرا شدن در پلتفرمهای مختلف شامل Linux ، Windows را دارد. با مطالعه این آموزش، درمییابید که چگونه میتوان کاربران جدیدی را در MySQL ایجاد نمود و مجوزهای مختلفی را به کاربران اعطا کنید. همچنین میتوانید تنظیمات مختلفی را برای هر کاربر اعمال نمایید.
سلام وقت بخیر
چند حساب کاربری رو میتونیم در Mysql ایجاد کنیم
کاربر عزیز ابر آسیاتک
MySQL، امکان ایجاد حسابهای کاربری متعددی را ارائه میدهد تا کاربران بتوانند به پایگاههای داده دسترسی داشته باشند و آن را مدیریت کنند.
کدوم افزونه برای احراز هویت امنیت بهتری داره؟
باسلام و وقت بخیر
کاربر عزیز،با اجرای دستور caching_sha2_password میتوانید احراز هویت ایمنتری را برای کاربران خود ایجاد نمایید.
روش ایجاد کاربر در همه سرورهای لینوکسی به یک صورت هست؟
بله کاملا درسته، صرف نظر از سیستم عامل اصلی سرور شما، روشهای ایجاد کاربر جدید MySQL و اعطای مجوز به آنها معمولاً یکسان میباشد.
با استفاده از چه دستوری میتونیم کاربر اضافه کنیم؟؟
کاربر عزیز ابر آسیاتک
پس از دسترسی به MySQL، میتوانید با استفاده از دستور CREATE USER یک نام کاربری برای خود مشخص کنید و بلافاصله علامت @ و سپس نام هاستی را که قصد دارید کاربر به آن متصل شود را ذکر نمایید، بدین صورت کاربر جدید اضافه خواهد شد.