آموزش نصب MySQL روی اوبونتو، راکی لینوکس و CentOS
راهنمای نصب MySQL در CentOS 8، راکی لینوکس ۹ و اوبونتو ۲۲.۰۴ را به صورت کامل و گامبهگام در این مقاله بخوانید.
MySQL یک سیستم مدیریت پایگاهداده منبع باز است که معمولاً به عنوان بخشی از استک محبوب LAMP (مخفف PHP/Python/Perl ،MySQL ،Apache ،Linux) نصب میشود. این پایگاهداده از زبان پرس و جوی ساختاریافته (Structured Query Language یا SQL) برای مدیریت دادهها بهره میبرد.
با استفاده از لینکهای زیر میتوانید به سرعت به راهنمای نصب MySQL روی سیستمعاملهای مختلف دسترسی پیدا کنید:
راهنمای نصب MySQL در اوبونتو ۲۲.۰۴
نصب MySQL در اوبونتو مانند توزیعهای دیگر لینوکس راحت است و شما با دنبال کردن چند مرحله ساده میتوانید آن را انجام دهید. در ادامه با این مراحل بیشتر آشنا میشوید:
پیش نیازهای مورد نیاز برای نصب MySQL در اوبونتو ۲۲.۰۴
برای انجام مراحل این آموزش، به سروری نیاز دارید که اوبونتو ۲۲.۰۴ را اجرا کند و این سرور دارای یک یوزر غیر روت با امتیازات administrative و یک فایروال UFW پیکربندی شده باشد.
مرحله اول – راهنمای نصب MySQL در اوبونتو ۲۲.۰۴
در اوبونتو ۲۲.۰۴، میتوانید MySQL را با استفاده از ریپازیتوری پکیج APT نصب کنید.
نخست ایندکس پکیج خود را بهروزرسانی کنید:
sudo apt update
سپس پکیج mysql-server
را نصب کنید:
sudo apt install mysql-server
اکنون مطمئن شوید سرور با استفاده از دستور systemctl start
اجرا میشود:
sudo systemctl start mysql.service
با اجرای دستورات بالا MySQL نصب میشود، اما ایمن نیست و شما باید مراحل دیگری را برای افزایش امنیت سیستم مدیریت پایگاه داده خود انجام دهید که در ادامه به شما آموزش خواهیم داد.
مرحله دوم – پیکربندی MySQL در اوبونتو ۲۲.۰۴
برای نصب MySQL، باید اسکریپت امنیتی موجود در سیستم مدیریت پایگاه داده را اجرا کنید. این اسکریپت برخی از گزینههای پیشفرض ناامن را تغییر میدهد. برخی از این تغییرات شامل غیرمجاز کردن لاگین روت از راه دور و حذف کاربران نمونه هستند.
اخطار: از جولای ۲۰۲۲، هنگام اجرای اسکریپت mysql_secure_installation
بدون پیکربندهای بعدی، خطایی رخ میدهد. دلیل این امر آن است که اسکریپت سعی میکند یک رمز عبور برای اکانت روت MySQL تنظیم کند، اما بهطور پیشفرض در اوبونتو، این اکانت برای اتصال با استفاده از رمز عبور پیکربندی نشده است. به همین دلیل خطای زیر نمایش داده میشد:
Output
... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.
New password:
این کار اسکریپت را به یک حلقه بازگشتی هدایت میکند که تنها با بستن پنجره ترمینال میتوانید از آن خارج شوید. اما از طرفی این اسکریپت باعث افزایش امنیت MySQL میشود؛ به همین دلیل توصیه میشود از آن استفاده کنید. برای اینکه از وارد شدن به حلقه بازگشتی مذکور جلوگیری کنید ابتدا باید نحوه احراز هویت کاربری روت MySQL را تنظیم کنید.
به این منظور ابتدا پرامپت MySQL را باز کنید:
sudo mysql
سپس دستور ALTER USER
زیر را اجرا کنید تا روش احراز هویت کاربر روت را به روش رمز عبور، تغییر دهید. مثال روش زیر احراز هویت را به mysql_native_password
تغییر میدهد:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
اکنون پس از انجام این تغییر، از پرامپت MySQL خارج شوید:
mysql> exit
در نهایت، میتوانید اسکریپت mysql_secure_installation
را بدون مشکل اجرا کنید.
حال میتوانید اسکریپت امنیتی را با sudo اجرا کنید:
sudo mysql_secure_installation
این دستور شما را به دستوراتی راهنمایی میکند که در آن میتوانید تغییراتی در گزینههای امنیتی نصب MySQL خود ایجاد کنید. اولین پرامپت از شما میخواهد Validate Password Plugin را تنظیم کنید. با نصب این افزونه هر کاربر MySQL که با یک رمز عبور احراز هویت میکند، باید رمز عبوری داشته باشد که با خطمشی انتخابی شما مطابقت داشته باشد:
Output
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2
درخواست بعدی از شما میخواهد یک رمز عبور را برای کاربر روت MySQL تنظیم کنید. رمز عبور ایمن انتخابی خود را وارد و سپس تأیید کنید:
Output
Please set the password for root here.
New password:
Re-enter new password:
نکته:
توجه داشته باشید که حتی اگر یک رمز عبور برای کاربر روت MySQL تعیین کردهاید، این کاربر در حال حاضر برای احراز هویت با یک رمز عبور هنگام اتصال به شِل MySQL پیکربندی نشده است.
اگر از افزونه Validate Password استفاده کرده باشید، بازخوردی در مورد قدرت رمز عبور جدید خود دریافت خواهید کرد. اسکریپت از شما میپرسد که آیا میخواهید با رمزی که وارد کردهاید ادامه دهید یا میخواهید رمز جدیدی وارد کنید. با فرض اینکه یک رمز عبور قوی انتخاب کردهاید، برای ادامه Y
را تایپ کنید:
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
اگر کلیدهای Y
و ENTER
را فشار دهید میتوانید پیشفرضها را برای سوالات دیگر بپذیرید. با انجام این کار برخی از کاربران ناشناس و پایگاه داده آزمایشی حذف میشوند، ورود به سیستم روت از راه دور غیرفعال میشود و قوانین جدید بارگیری میشود تا MySQL بلافاصله تعییراتی که ایجاد کردهاید را اعمال کند.
نکته: پس از تکمیل اسکریپت امنیتی، میتوانید MySQL را دوباره باز کنید و روش احراز هویت کاربر روت را به حالت پیشفرض، auth_socket
تغییر دهید. برای احراز هویت به عنوان کاربر روت MySQL با استفاده از رمز عبور، این دستور را اجرا کنید:
mysql -u root -p
سپس با دستور زیر به روش احراز هویت پیشفرض برگردید:
ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
این بدان معنی است که شما میتوانید با استفاده از دستور sudo mysql
یک بار دیگر به عنوان کاربر روت به MySQL متصل شوید.
پس از تکمیل اسکریپت، نصب MySQL ایمن شده است.
مرحله سوم – ایجاد یک کاربر اختصاصی MySQL و اعطای امتیازات در اوبونتو ۲۲.۰۴
پس از پایان نصب، MySQL یک اکانت روت ایجاد میکند که میتوانید از آن برای مدیریت پایگاه داده خود استفاده کنید. این کاربر دارای امتیازات کامل بر سرور MySQL است؛ به این معنی که کنترل کاملی بر هر پایگاه داده، جدول، کاربر و … دارد. به همین دلیل، بهتر است از این حساب خارج از عملکردهای administrative استفاده نکنید. در ادامه به آموزش نحوه ایجاد یک کاربر غیر روت با امتیازات administrative میپردازیم.
در سیستمهای اوبونتو که MySQL 5.7 (و نسخههای بعدی) را اجرا میکنند، کاربر روت MySQL بهطور پیشفرض، به جای رمز عبور، با افزونه auth_socket
احراز هویت میشود. این افزونه نیاز دارد که نام کاربر سیستمعاملی که کلاینت MySQL را فراخوانی میکند با نام کاربر MySQL مشخص شده در دستور مطابقت داشته باشد؛ بنابراین برای دسترسی به کاربر روت MySQL باید mysql
را با امتیازات sudo
اجرا کنید:
sudo mysql
نکته: اگر در آموزش نصب MySQL از راهنمای دیگری استفاده کرده و احراز هویت رمز عبور را برای root فعال نمودهاید، برای دسترسی به شِل MySQL باید دستور دیگری را به کار ببرید. دستور زیر کلاینت MySQL شما را با امتیازات کاربر معمولی اجرا میکند و شما فقط با احراز هویت میتوانید امتیازات administrator را در پایگاه داده به دست آورید:
mysql -u root -p
هنگامی که به اعلان یا پرامپت MySQL دسترسی پیدا کردید، میتوانید یک کاربر جدید با عبارت CREATE USER
ایجاد کنید. برای انجام این کار دستورات زیر را اجرا کنید:
mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
بعد از CREATE USER
نام کاربری مورد نظر را وارد میکنید. بلافاصله پس از آن علامت @
و نام هاست قرار میگیرد. اگر فقط قصد دارید از سرور اوبونتو به این کاربر به صورت محلی دسترسی داشته باشید، می توانید localhost
را تعیین کنید. قرار دادن نام کاربری و هاست در یک نقل قول (یا به عبارتی استفاده از ” “) همیشه ضروری نیست، اما انجام این کار می تواند از ارورها جلوگیری کند.
افزونههای مختلفی برای احراز هویت کاربر وجود دارند که میتوانید از آنها استفاده کنید. استفاده از افزونه auth_socket
که قبلتر به آن اشاره کردیم، راحتتر است، زیرا امنیت قوی را بدون نیاز به وارد کردن رمز عبور توسط کاربران معبر، برای دسترسی به پایگاه داده فراهم میکند. اما از اتصالات راه دور جلوگیری میکند که این امر کار را برای برنامههای خارجی که نیاز به تعامل با MySQL دارند، پیچیده میکند.
برای جایگزین میتوانید بخش WITH authentication_plugin
را کنار بگذارید و از پلاگین caching_sha2_password
استفاده کنید. این افزونه برای کاربرانی که میخواهند با رمز عبور وارد شوند و از قابلیتهای امنیتی بهتر بهره ببرند مناسب است.
برای ایجاد کاربری که با caching_sha2_password
احراز هویت میکند، دستور زیر را اجرا کنید. مطمئن شوید که ali را با نام کاربری دلخواه خود و password
را با پسورد قدرتمند و دلخواه خود جایگزین میکنید:
mysql> CREATE USER 'ali'@'localhost' IDENTIFIED BY 'password';
نکته: برخی از نسخههای PHP باعث ایجاد مکشلاتی در caching_sha2_password
میشوند. اگر قصد دارید از این پایگاه داده با یک برنامه PHP (مثلا phpMyAdmin) استفاده کنید، ممکن است بخواهید کاربری را ایجاد کنید که از پلاگین قدیمی اما همچنان ایمن mysql_native_password
برای احراز هویت استفاده کند:
mysql> CREATE USER 'ali'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
همچنین میتوانید کاربری ایجاد کنید که با caching_sha2_plugin
و ALTER
احراز هویت میکند. در این صورت، دستور را بهصورت زیر تغییر دهید:
mysql> ALTER USER 'ali'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
پس از ایجاد کاربر جدید خود، میتوانید امتیازات لازم را به آن بدهید. سینتکس کلی برای دادن امتیازات به کاربر بهصورت زیر است:
GRANT PRIVILEGE ON database.table TO 'username'@'host';
در این مثال، PRIVILEGE
مشخص میکند که کاربر مجاز است چه اقداماتی را در database
و table
مشخص شده انجام دهد. میتوانید با جدا کردن هریک با کاما، چندین امتیاز را در یک دستور به یک کاربر اختصاص دهید. همچنین میتوانید با وارد کردن ستاره (*
) به جای پایگاه داده و نام جدول، به کاربر امتیاز گلوبال بدهید. در SQL، ستارهها کاراکترهای خاصی هستند که برای نشان دادن “all” یا به عبارتی، «همه چیز» پایگاه دادهها یا جداول استفاده میشوند.
دستور زیر به یوزر امتیازات گلوبال برای ALTER
،CREATE
و DROP
دیتابیس، جداول و کاربران و همچنین امکان UPDATE
،INSERT
و DELETE
دادههای هر جدول سرور را میدهد. علاوه بر این به کاربر اجازه میدهد داده ها را با SELECT
جستجو کند، کلیدهای خارجی را با کلمه کلیدی REFERENCES
ایجاد و عملیات FLUSH
را با امتیاز RELOAD
انجام دهد. کافی است به کاربران مجوزهای لازم را بدهید و امیتازات را تنظیم کنید.
میتوانید لیست کامل امتیازات MySQL را مطالعه کنید.
برای اعطای این دسترسیها باید GRANT
را اجرا و ali را با نام کاربری MySQL خود جایگزین کنید:
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, INDEX, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'ali'@'localhost' WITH GRANT OPTION;
توجه داشته باشید که این بیانیه شامل WITH GRANT OPTION
میشود که به کاربر MySQL اجازه میدهد هر گونه مجوزی را که دارد به سایر کاربران سیستم بدهد.
اخطار: به این نکته توجه داشته باشید که برخی از کاربران ممکن است بخواهند به کاربر MySQL خود امتیاز ALL PRIVILEGES
(امتیازاتی شبیه به کاربر روت) را بدهند، مانند:
GRANT ALL PRIVILEGES ON *.* TO 'ali'@'localhost' WITH GRANT OPTION;
اما دقت کنید که چنین امتیازات گستردهای نباید به سادگی اعطا شود، زیرا هر کسی که به این کاربر MySQL دسترسی داشته باشد، کنترل کاملی بر پایگاه داده سرور خواهد داشت.
در ادامه، با اجرای دستور FLUSH PRIVILEGES
، این کار هر حافظهای را که سرور در نتیجه دستورات CREATE USER
و GRANT
ذخیره کرده است، آزاد میکند:
FLUSH PRIVILEGES;
سپس میتوانید از کلاینت MySQL خارج شوید:
mysql> exit
برای ورود به عنوان کاربر جدید MySQL، از دستوری مانند زیر استفاده کنید:
mysql -u ali -p
فلگ p-
باعث میشود کلاینت MySQL از شما رمز عبور کاربر را برای احراز هویت بخواهد.
در مرحله آخر به تست MySQL میپردازیم.
مرحله چهارم – تست MySQL در اوبونتو ۲۲.۰۴
پس از نصب MySQL باید بهصورت خودکار شروع به کار کند. برای بررسی وضعیت آن باید MySQL را تست کنیم:
systemctl status mysql.service
پس از اجرای دستور بالا خروجی زیر را مشاهده خواهید کرد:
Output
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-04-11 16:04:39 UTC; 2h 36min ago
Process: 2593 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 2601 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 1119)
Memory: 334.3M
CPU: 17.871s
CGroup: /system.slice/mysql.servic
در صورت اجرا نشدن MySQL میتوانید آن را با sudo systemctl start mysql
اجرا کنید.
برای بررسی بیشتر، میتوانید با استفاده از ابزار mysqladmin
به پایگاه داده متصل شوید. این ابزار یک کلاینت برای اجرای دستورات administrative محسوب میشود. به عنوان مثال، این دستور، میخواهد بهعنوان یک کاربر MySQL به نام ali (از طریق u ali
–) متصل شود، رمز عبور (p-
) را درخواست کند و نسخه را برگرداند. حتماً ali
را به نام کاربر اختصاصی MySQL خود تغییر دهید و پس از درخواست رمز عبور، آن را وارد کنید:
sudo mysqladmin -p -u ali version
اکنون باید خروجی زیر را مشاهده کنید:
Output
mysqladmin Ver 8.0.28-0ubuntu4 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 8.0.28-0ubuntu4
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 2 hours 10 min 11 sec
Threads: 2 Questions: 25 Slow queries: 0 Opens: 160 Flush tables: 3 Open tables: 79 Queries per second avg: 0.000
این خروجی نشان میدهد MySQL راهاندازی و اجرا شده است.
بیشتر بخوانید: آموزش نصب LAMP
آموزش نصب MySQL در CentOS 8
نصب MySQL در CentOS 8 بسیار راحت است و با دنبال کردن مراحل زیر میتوانید بهراحتی آن را نصب کنید.
پیش نیازهای مورد نیاز برای نصب MySQL در CentOS 8
برای انجام مراحل این آموزش، به سروری نیاز دارید که CentOS 8 را اجرا کند و این سرور دارای یک یوزر غیر روت با امتیازات administrative و یک فایروال firewalld پیکربندی شده باشد. پیشنهاد میکنیم برای پیکربندی این موارد، راهنمای اولیه تنظیمات CentOS را مطالعه نمایید.
مرحله اول- نصب MySQL
در لینوکس CentOS 8، نسخه ۸ پایگاهداده MySQL از طریق ریپازیتوری پیشفرض در دسترس است.
برای نصب پکیج mysql-server
، کافی است که دستور زیر را اجرا کنید:
sudo dnf install mysql-server
سپس کلیدهای y
و ENTER
را برای ادامه کار فشار دهید:
Output
. . .
Install 49 Packages
Total download size: 46 M
Installed size: 252 M
Is this ok [y/N]: y
اکنون، MySQL روی سرور شما نصب شده است، اما هنوز نمیتوانید از آن استفاده کنید. پکیج mysql-server
که نصب کردهاید، MySQL را برای اجرا بهعنوان یک سرویس systemd
به نام mysqld.service
پیکربندی میکند. برای استفاده از MySQL، باید دستور systemctl
را اجرا کنید:
sudo systemctl start mysqld.service
برای بررسی اینکه سرویس به درستی اجرا میشود، باید دستور زیر را اجرا کنید. توجه داشته باشید که برای بسیاری از دستورات systemctl
(شامل start
و status
) نیازی نیستservice.
را بعد از نام سرویس اضافه کنید:
sudo systemctl status mysqld
اگر MySQL با موفقیت اجرا شود، خروجی نشان میدهد که سرویس MySQL فعال است:
Output
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-03-12 14:07:41 UTC; 1min 7s ago
Main PID: 15723 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 5056)
Memory: 461.8M
CGroup: /system.slice/mysqld.service
└─15723 /usr/libexec/mysqld --basedir=/usr
Mar 10 19:17:32 cent-mysql-3 systemd[1]: Starting MySQL 8.0 database server...
Mar 10 19:17:32 cent-mysql-3 mysql-prepare-db-dir[15639]: Initializing MySQL database
Mar 10 19:17:41 cent-mysql-3 systemd[1]: Started MySQL 8.0 database server.
در مرحله بعد، MySQL را تنظیم کنید تا هر زمان که سرور بوت میشود شروع به کار کند:
sudo systemctl enable mysqld
نکته: برای غیر فعال کردن MySQL در هنگام بوت، میتوانید از دستور زیر استفاده کنید:
sudo systemctl disable mysqld
اکنون نصب MySQL در CentOS 8 به پایان رسید. در مرحله بعد نحوه تقویت امنیت پایگاهداده با استفاده از شل اسکریپت را بررسی میکنیم.
مرحله دوم – ایمن سازی MySQL در CentOS
MySQL شامل یک اسکریپت امنیتی است که این امکان را برای شما فراهم میکند تا برخی از گزینه های پیکربندی شده را به منظور بهبود امنیت MySQL تغییر دهید. برای استفاده از اسکریپت امنیتی، دستور زیر را اجرا کنید:
sudo mysql_secure_installation
با اجرای این دستور، سوالاتی ظاهر میشوند که آیا میخواهید تغییرات خاصی در گزینههای امنیتی نصب MySQL ایجاد کنید. اولین درخواست از شما میخواهد افزونه اعتبارسنجی رمز عبور (Validate Password Plugin) را تنظیم کنید. از این افزونه میتوانید برای آزمایش قدرت رمز عبور MySQL خود استفاده کنید.
برای تنظیم افزونه اعتبار سنجی رمز عبور، اسکریپت از شما میخواهد که سطح اعتبارسنجی رمز عبور را انتخاب کنید. برای قویترین سطح (که با وارد کردن 2
انتخاب میشود) باید رمز عبور شما حداقل هشت کاراکتر داشته باشد و ترکیبی از حروف بزرگ، کوچک، عدد و کاراکترهای خاص را شامل شود:
Output
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
درخواست بعدی، از شما میخواهید که رمز عبوری را برای کاربر روت MySQL انتخاب و وارد کنید:
Output
Please set the password for root here.
New password:
Re-enter new password:
اگر از افزونه Validate Password استفاده کرده باشید، در مورد قدرت رمز عبور جدید خود بازخوردی دریافت خواهید کرد. سپس اسکریپت از شما میپرسد که آیا میخواهید با رمزی که وارد کردهاید ادامه دهید یا رمز جدیدی وارد کنید. با فرض اینکه از قدرت رمز عبوری که وارد کرده اید راضی هستید، Y
را برای ادامه اسکریپت وارد کنید:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
پس از آن، میتوانید Y
و سپس ENTER
را فشار دهید تا پیشفرضها را برای تمام سؤالات بعدی بپذیرید. با این کار برخی از کاربران ناشناس و پایگاهداده آزمایشی، حذف شده، لاگین روت از راه دور غیرفعال و قوانین جدید بارگیری میشوند تا MySQL بلافاصله با تغییراتی که ایجاد کردهاید، تنظیم شود.
اکنون نصب MySQL در CentOS 8 و ایمنسازی آن به پایان رسید. در مرحله بعدی این پایگاهداده را تست کنیم که آیا بهدرستی کار میکند یا خیر.
مرحله سوم – آزمایش MySQL در CentOS
میتوانید صحت نصب خود را بررسی کنید و با اتصال به ابزار mysqladmin
، کلاینتی که به شما امکان اجرای دستورات administrative را میدهد، اطلاعاتی در مورد آن دریافت نمایید.
از دستور زیر برای اتصال به MySQL به عنوان روت (u root
–)، درخواست رمز عبور (p-
) و برگرداندن نسخه نصب استفاده کنید:
mysqladmin -u root -p version
اکنون خروجی زیر را مشاهده میکنید:
Output
mysqladmin Ver 8.0.17 for Linux on x86_64 (Source distribution)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 8.0.17
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 2 hours 52 min 37 sec
Threads: 2 Questions: 20 Slow queries: 0 Opens: 131 Flush tables: 3 Open tables: 48 Queries per second avg: 0.001
این خروجی نشان میدهد که نصب شما با موفقیت انجام شده است. اگر میخواهید به MySQL متصل شوید و دادهها را اضافه کنید، باید دستور زیر را به کار ببرید:
mysql -u root -p
مانند دستور قبلی mysqladmin
، این دستور شامل گزینه u-
است که به شما امکان میدهد کاربری را که میخواهید به آن متصل شوید (در این مورد روت) مشخص کنید. گزینه p-
از شما میخواهد رمز عبوری که در مرحله قبل تعیین کردهاید، وارد کنید. در نهایت پس از وارد کردن خروجی زیر را مشاهده خواهید کرد:
mysql>
در نهایت از MySQL میتوانید برای ایجاد و بارگذاری پایگاههای داده و اجرای کوئریها استفاده کنید.
آموزش نصب MySQL در راکی لینوکس ۹
در این بخش از مقاله قصد داریم به آموزش نصب MySQL در Rocky Linux 9 بپردازیم. برای نصب این سیستم مدیریت داده باید مراحل زیر را به ترتیب دنبال کنید.
پیش نیازهای مورد نیاز برای نصب MySQL در راکی لینوکس ۹
برای انجام مراحل این آموزش، به سروری نیاز دارید که راکی لینوکس ۹ را اجرا کند و این سرور دارای یک یوزر غیر روت با امتیازات administrative و یک فایروال firewalld پیکربندی شده باشد.
مرحله اول – نصب MySQL در راکی لینوکس ۹
ریپازیتوری پیشفرض راکی لینوکس ۹، دارای نسخه ۸ سیستم مدیریت پایگاه داده MySQL است. برای نصب MySQL کافی است برای پیکج mysql-server
را نصب نمایید:
sudo dnf install mysql-server
اکنون برای تایید باید کلیدهای y
و سپس ENTER
فشار دهید.
Output
. . .
Install 49 Packages
Total download size: 46 M
Installed size: 252 M
Is this ok [y/N]: y
حالا MySQL نصب شده اما هنوز قابل استفاده نیست. پکیج mysql-server
، سیستم مدیریت پایگاه داده MySQL را بهعنوان یک سرویس systemd
به نام mysqld.service
پیکربندی میکند. برای استفاده از MySQL، باید با دستور systemctl
شروع کنید:
sudo systemctl start mysqld.service
برای بررسی اینکه سرویس به درستی اجرا شده، دستور زیر را اجرا کنید. توجه داشته باشید که برای بسیاری از دستورات systemctl
– از جمله start
و status
– نیازی نیست که service.
را بعد از نام سرویس اضافه کنید:
sudo systemctl status mysqld
در صورتی که MySQL با موفقیت نصب و راهاندازی شده باشد، خروجی زیر را مشاهده خواهید کرد:
Output
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-03-12 14:07:41 UTC; 1min 7s ago
Main PID: 15723 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 5056)
Memory: 474.2M
CGroup: /system.slice/mysqld.service
└─15723 /usr/libexec/mysqld --basedir=/usr
Mar 12 14:07:32 rocky9-mysql systemd[1]: Starting MySQL 8.0 database server...
Mar 12 14:07:32 rocky9-mysql mysql-prepare-db-dir[15639]: Initializing MySQL database
Mar 12 14:07:41 rocky9-mysql systemd[1]: Started MySQL 8.0 database server.
اکنون در این مرحله شما باید MySQL را به صورتی تنظیم کنید تا هر زمان که سرور بوت میشود با دستور زیر کار خود را شروع کند:
sudo systemctl enable mysqld
نکته: اگر قصد دارید راهاندازی MySQL را در هنگام بوت سرور غیرفعال کنید، کافی است دستور زیر را اجرا کنید:
sudo systemctl disable mysqld
اکنون مراحل راهنمای نصب و راهاندازی MySQL به پایان رسید. در مرحله بعد به نحوه تقویت امنیت پایگاه داده با استفاده از شل اسکریپت میپردازیم.
مرحله دوم – ایمن سازی MySQL در راکی لینوکس ۹
MySQL دارای یک اسکریپت امنیتی است که به شما اجازه میدهد برای افزایش امنیت MySQL برخی از گزینههای پیکربندی پیشفرض را تغییر دهید. برای استفاده از این اسکریپت امنیتی کافی است دستور زیر را اجرا کنید:
sudo mysql_secure_installation
در این مرحله بعد از شما خواسته میشود به منظور بهبود امنیت سیستم مدیریت پایگاه داده خود، تغییراتی را ایجاد کنید. برای مثال اولین چیزی که از شما خواسته میشود این است که افزونه اعتبار سنجی رمز عبور (Validate Password Plugin) را تنظیم کنید. از این پلاگین میتوانید برای تست قدرت پسورد MySQL استفاده نمایید.
با انتخاب و راهاندازی افزونه اعتبار سنجی رمز عبور، اسکریپت از شما میخواهد سطح آن را انتخاب کنید. اگر قویترین سطح را میخواهید، باید کلید 2
را فشار دهید. سپس، رمز عبوری ۸ کاراکتری را وارد کنید که شامل ترکیبی از حروف بزرگ، کوچک، عددی و کاراکترهای خاص باشد.
Output
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
درخواست بعدی از شما میخواهد یک رمز عبور برای کاربر روت MySQL انتخاب و وارد کرده و سپس آن را تایید کنید:
Output
Please set the password for root here.
New password:
Re-enter new password:
در نهایت با استفاده از Validate Password Plugin بازخوردی درباره قدرت رمز عبور آن دریافت خواهید کرد. اسکریپت از شما میپرسد آیا میخواهید رمز عبور جدید وارد کنید یا از همان قبلی استفاده میکنید؟ اگر از رمز عبور وارد شده خود راضی هستید، برای تایید نهایی آن کافی است که کلید Y
را فشار دهید:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
با فشار دادن کلیدهای Y
و ENTER
میتوانید از بقیه درخواستها بهصورت پیشفرض رد شوید. این موارد، برخی از کاربران ناشناس و دیتابیسهای تستی اولیه را حذف میکند، لاگین روت از راه دور را غیر فعال میکند و قوانین جدید را بلافاصله در MySQL اعمال مینماید.
مرحله سوم – تست MySQL در راکی لینوکس ۹
پس از آموزش نصب MySQL در راکی لینوکس ۹ و با اتصال به ابزار mysqladmin
، میتوانید اطلاعاتی درباره کلاینتای که به شما امکان اجرای دستورات administrative را میدهد، به دست آورید. برای اتصال به MySQL به عنوان روت (u root
–)، درخواست رمز عبور (p-
) و برگرداندن نسخه نصب شده، دستور زیر را به کار ببرید:
mysqladmin -u root -p version
اکنون خروجی زیر را مشاهده خواهید کرد:
Output
mysqladmin Ver 8.0.28 for Linux on x86_64 (Source distribution)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Server version 8.0.28
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/lib/mysql/mysql.sock
Uptime: 1 min 11 sec
Threads: 2 Questions: 16 Slow queries: 0 Opens: 133 Flush tables: 3 Open tables: 49 Queries per second avg: 0.225
این خروجی نشان میدهد که نصب MySQL با موفقیت انجام شده است.
برای اتصال به MySQL و افزودن داده به آن، موارد زیر را اجرا کنید:
mysql -u root -p
مانند دستور قبلی mysqladmin
، گزینه u-
به شما امکان میدهد کاربری را که میخواهید به آن متصل شوید (در این مثال، کاربر روت)، مشخص کنید و گزینه p-
رمز عبوری که در مرحله قبل انتخاب کردهاید را درخواست میکند.
پس از اینکه رمز عبور کاربر روت MySQL خود را وارد کردید، اعلان MySQL را مشاهده خواهید کرد:
mysql>
اکنون میتوانید بارگذاری دیتابیسها و اجرای کوئریها را آغاز نمایید.
جمعبندی
در این مقاله آموزشی، به راهنمای نصب MySQL در اوبونتو ۲۲.۰۴، CentOS 8 و راکی لینوکس ۹ پرداختیم. همچنین آموزش دادیم که چگونه میتوانید امنیت MySQL را بالا ببرید و یک کاربر جدید ایجاد کنید.