آموزش نصب MySQL روی CentOS 8
در این مقاله میخوانید
دیتابیسها بخشی جدانشدنی از هر پلتفرم هستند. MySQL یکی از دیتابیسهای رابطهای پرطرفدار حالحاضر است که بهرایگان دراختیار همه قرار دارد. MySQL روی CentOS 8 بهآسانی نصب میشود؛ اما بدون ایمنسازی و پیکربندی اولیه نمیتوان از آن استفاده کرد. اگر این دیتابیس ایمن نشود، استفاده از آن خطرناک است و احتمال هکشدن اطلاعات افزایش مییابد.
در این مقاله از آموزش سیستم عامل، هر آنچه از نصب تا استفاده از این دیتابیس نیاز دارید، توضیح دادهایم: ابتدا دیتابیس MySQL را بهطورکامل روی سرور نصب و پیکربندی میکنیم و درادامه، ایمنسازی اولیه را انجام میدهیم تا بتوانید با اطمینان کامل از دیتابیس استفاده کنید.
خرید سرور لینوکس با قابلیت نصب MySQL از پارس پک
شما میتوانید از این مقاله برای مدیریت سرورهای لینوکس خود استفاده کنید و اگر قصد خرید هر یک از سرویسهای لینوکسی پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما میتوانید برای اطلاع از تعرفهها و هزینهها به لینکهای زیر مراجعه کنید.
سیستم دیتابیس MySQL چگونه است؟
MySQL سیستمی دیتابیس متنباز است که معمولاً بهعنوان بخشی از پکیج محبوب LEMP، یعنی Linux, Nginx, MySQL/MariaDB, PHP/Python/Perl، استفاده میشود. MySQL دیتابیسی رابطهای (Relational) است که دادهها را در جداولی متشکل از ستون و ردیف ذخیره میکند. شایان ذکر است این سیستم از SQL (مخفف Structured Query Language) برای مدیریت کوئریها استفاده میکند.
پیشنیازها
برای نصب MySQL بر CentOS 8 کافی است سروری با پیکربندی اولیه زیر داشته باشید:
- سرور مجازی لینوکس یا سرور اختصاصی لینوکس دارای CentOS 8
- مجهز به یک کاربر non-root با سطح دسترسی مدیریت
- فایروال با پیکربندی Firewalld
مرحله اول: نصب MySQL
در CentOS 8، پکیج MySQL نسخه ۸ در ریپازیتوری اصلی وجود دارد. دستور زیر را برای نصب پکیج mysql-server بههمراه تعدادی از دیپندنسیهای آن اجرا کنید:
sudo dnf install mysql-server
برای تأیید نصب هنگامیکه از شما درخواست شد، دکمه Y و سپس Enter را بزنید.
خروجی:
. . . Install 49 Packages Total download size: 46 M Installed size: 252 M Is this ok [y/N]: y
پس از اینکه MySQL با موفقیت نصب شد، برای استفاده از آن باید چند مورد پیکربندی انجام دهید. پکیج نصبشده برای اجرا دستور systemd را اجرا میکند که آن دستور نیز سرویسی به نام mysqld.service را اجرا میکند. برای استفاده از MySQL، باید پس از اجرا دستور systemctl اجرا شود. برای انجام این کار، دستور زیر را وارد کنید:
sudo systemctl start mysqld.service
برای اطمینان از اجرای صحیح سرویس، دستور زیر را اجرا کنید. توجه کنید بسیاری از دستورها مانند start یا status اجباری نیستند و تنها میتوانید بعد از systemctl نام سرویستان را بهتنهایی قرار دهید.
sudo systemctl status mysqld
برای آشنایی با سیستمهای مدیریت دیتابیس نسبی SQLite و MySQL و PostgreSQL و مقایسهی عملکرد آنها با یکدیگر مقاله زیر را بخوانید.
اگر MySQL با موفقیت پیکربندی شده باشد، باید خروجی زیر را دریافت کنید:
● 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 cent-mysql-3 systemd[1]: Starting MySQL 8.0 database server... Mar 12 14:07:32 cent-mysql-3 mysql-prepare-db-dir[15639]: Initializing MySQL database Mar 12 14:07: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 در سرور را آموزش میدهیم.
مرحله دوم: ایمنسازی MySQL
MySQL بهطورپیشفرض اسکریپتی امنیتی دارد که برخی از گزینههای آن را برای بهبود امنیت MySQL میتوانید تغییر دهید. برای استفاده از اسکریپت امنیتی، دستور زیر را اجرا کنید:
sudo mysql_secure_installation
این سرویس با ارائه برخی درخواستها، شما را راهنمایی میکند تا بتوانید امنیت سیستم خود را افزایش دهید. اولین درخواست این سرویس از شما استفاده از افزونه اعتبارسنجی رمزعبور برای MySQL است. این سرویس قدرت رمزهای عبور شما را میسنجد.
اگر این افزونه امنیتی را فعال کنید، سرویس از شما میخواهد که سطح امنیت رمزعبورتان را انتخاب کنید. اگر قویترین سطح رمزعبور را انتخاب کنید (عدد ۲)، رمزعبور شما باید حداقل شامل ۸ کاراکتر و ترکیبی از حروف بزرگ، حروف کوچک، عدد و کاراکترهای خاص باشد.
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
دومین درخواستی که از شما میشود، درخواست تنظیم رمزعبور برای کاربر اصلی root MySQL است. رمزعبورتان را انتخاب و تأیید کنید.
خروجی:
Please set the password for root here. New password: Re-enter new 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 بپذیرید. با این کار برخی از کاربران ناشناس دیتابیس و دیتابیسهای تستی حذف خواهند شد و ورود از راه دور (Remote Root Logins) غیرفعال خواهد شد. درنهایت، تمامی قوانین ذخیره خواهند شد و MySQL به آن قوانین عمل خواهد کرد.
برای دریافت آموزش کامل نصب Apache ،MariaDB و پردازشگر کد PHP در CentOS 8 به همراه تست، مقاله زیر را بخوانید.
تمام قوانین:
Please set the password for root here. New password: Re-enter new password: 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 By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
نصب و ایمنسازی MySQL را روی سرور CentOS 8 با موفقیت انجام شد. در آخرین مرحله، باید دیتابیس خود را تست کنیم تا از فعالبودن و عملکرد صحیحش مطمئن شویم.
مرحله سوم: آزمایش MySQL
برای آزمایش MySQL، از ابزار mysqladmin میتوانید استفاده کنید. این ابزار بهعنوان کلاینت به شما امکان میدهد دستورها را اجرا و اطلاعات را دریافت کنید. از دستور زیر برای اتصال MySQL بهعنوان root (دستور -u root) با درخواست رمزعبور (-p) و درنهایت نمایش نسخه نصبشده استفاده کنید:
mysqladmin -u root -p version
درادامه، باید خروجی زیر را مشاهده کنید:
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، دستور زیر را اجرا کنید:
mysql -u root -p
همانند دستور mysqladmin قبل، این دستور نیز شامل -u برای متصلشدن بهعنوان کاربر (در این مثال root) و شامل -p برای درخواست رمزعبور دیتابیس است. پس از اینکه رمزعبور کاربر root MySQL را وارد کردید، اعلان MySQL را مشاهده خواهید کرد که آماده اجرای دستورهای شما است:
Mysql>
از اینجا میتوانید کوئریهای خود را اجرا کنید و عملیاتهای ورود، دریافت، بهروزرسانی و حذف اطلاعات را انجام دهید و دیتابیس نصبشده را تست کنید.
مرحله چهارم: ایجاد دیتابیس MySQL و حساب کاربری جدید
برای ایجاد دیتابیس در MySQL، باید با استفاده از mysqladmin کوئریهای SQL را اجرا و دیتابیس مدنظرتان را ایجاد کنید. با استفاده از کوئریهای زیر، میتوانید پایگاهدادهای با نام spaced و کاربر جدیدی با نام mars ایجاد میکنید:
CREATE DATABASE spacedb; CREATE USER 'mars'@'%' IDENTIFIED BY 'User_Password_Here'; GRANT SELECT, INSERT, UPDATE, DELETE ON spacedb.* TO 'mars'@'%'; GRANT ALL PRIVILEGES ON spacedb.* TO 'mars'@'%'; SELECT user,host FROM mysql.user; SHOW GRANTS for mars; quit mysql -u mars -p spacedb mysql -u mars -h localhost -p spacedb
جمعبندی
نصب و پیکربندی MySQL روی CentOS 8 بهآسانی انجام میشود؛ اما بدون ایمنسازی و تست، استفاده از آن اصلاً توصیه نمیشود. در این مقاله از آموزش سنت او اس و آموزش پایگاه داده، هرآنچه از نصب و راهاندازی اولیه MySQL نیاز داشتید، برایتان توضیح دادیم و حالا بهراحتی میتوانید از این سیستم دیتابیس استفاده کرد.
پسازآن، میتوانید دیتابیسی کامل دراختیار داشته باشید و از آن بهره ببرید. بعد از نصب و پیکربندی اولیه، پیکربندیهایی مانند Replication یا Cluster را میتوانید انجام دهید. دقت کنید پیکربندی امنیتیای که انجام شد، تنها پیکربندی اولیه است و برای ایمنسازی بیشتر حتماً اقدام کنید.
سؤالات متداول
۱. چگونه میتوانم به MySQL در CentOS 8 متصل شوم؟
- نصب سرور CentOS 8
- فعالکردن MySQL 8 mysqld
- ایمنسازی MySQL سرور
- پیکربندی یا راهاندازی مجدد سرور MySQL 8
- تست MySQL 8
۲. آیا MySQL بهطورپیشفرض روی CentOS 8 وجود دارد؟
خیر، با استفاده از دستور dnf install mysql-server میتوانید از ریپازیتوری سرور نصب کنید.
۳. چگونه نسخه CentOS را پیدا کنم؟
سادهترین راه برای بررسی نسخه CentOS اجرای دستور cat /etc/centos-release است.
۴. چگونه نسخه MySQL نصبشده روی CentOS 8 را پیدا کنم؟
با استفاده از دستور sudo systemctl status mysqld یا mysql -V میتوانید این کار را انجام دهید.
۵. MySQL کجای لینوکس نصب میشود؟
تمام باینریهای مربوط به MySQL را در /usr/bin و /usr/sbin میتوانید پیدا کنید. همه جدولها و دیتابیسها در پوشه /var/lib/mysql ایجاد خواهند شد.
۶. MySQL رایگان است یا پولی؟
MySQL نرمافزاری رایگان و منبعباز است که مجوز عمومی GNU دارد و تحت انواع مجوزهای اختصاصی دردسترس است.
۷. سایر دیتابیسهای برتر کداماند؟
- Cassandra
- PostgreSQL
- HBase
- Redis
- MongoDB
- Neo4j
- Elasticsearch
- MS SQL Server