نصب MariaDB / MySQL در Rocky Linux 9 | AlmaLinux 9
- پایگاههای داده رابطهای (RDBMS یا پایگاههای داده SQL): در جایی که دادهها در جداول و ردیفها ذخیره میشوند، جداول با استفاده از کلیدها به هم مرتبط میشوند. آنها عبارتند از MySQL، MariaDB، PostgreSQL، SQLite و غیره
- پایگاه داده های غیر رابطه ای (پایگاه های داده NoSQL): در اینجا داده ها با استفاده از یک مدل ذخیره سازی بهینه شده برای نیازهای خاص ذخیره می شوند. آنها عبارتند از Couchbase، Apache Cassandra، MongoDB، Redis، Apache HBase و غیره
MySQL یک منبع باز محبوب است که توسط Oracle Corporation توسعه و توزیع شده است. در سال 1995 در سوئد تأسیس شد و در سال 2000 به صورت متن باز درآمد . در سال 2002، یکی دیگر از مقرهای MySQL در ایالات متحده ایجاد شد. در سال 2003، MyQSL وارد شراکت با SAP شد و ویژگی های زیادی به آن اضافه شد. در سال 2008 MySQL توسط Sun Microsystems خریداری شد. در سال 2009، Sun Microsystems توسط Oracle خریداری شد و MySQL را به یک پروژه Oracle تبدیل کرد.
MariaDB یک فورک پایگاه داده رابطه ای منبع باز و رایگان از پایگاه داده MySQL است. این توسط توسعه دهندگان اصلی پایگاه داده MySQL پس از اینکه شرکت Oracle قصد داشت MySQL و نسخه تجاری/پرداخت شده را در سال 2010 بسازد، توسعه یافت . MariaDB به دلیل عملکرد، ثبات، باز بودن، و بنیاد MariaDB که مشارکتهای شایستگی فنی را میپذیرد، شناخته شده است. آخرین پیشرفتها، خوشهبندی پیشرفته با Galera Cluster 4 و ویژگیهای سازگاری با پایگاه داده اوراکل است.

نصب MariaDB / MySQL در Rocky Linux 9 | AlmaLinux 9
این راهنما تمام مراحل مورد نیاز را در مورد نحوه نصب و پیکربندی پایگاه داده MariaDB / MySQL در Rocky Linux 9 / Alma Linux 9 ارائه می دهد.
#1. MariaDB / MySQL را روی Rocky Linux 9|AlmaLinux 9 نصب کنید
راکی لینوکس 9 و آلما لینوکس 9 که اخیرا منتشر شده اند، MySQL 8 و MariaDB 10.5 را در مخازن پیش فرض خود ارائه می دهند. این کار نصب این آخرین نسخه های منتشر شده را بر روی سیستم شما آسان می کند. با استفاده از مراحل زیر یک پایگاه داده ترجیحی را روی سیستم خود نصب کنید:
گزینه 1. MariaDB را روی راکی لینوکس 9 / AlmaLinux 9 نصب کنید
MariaDB 10.5 اگرچه آخرین نسخه منتشر شده از MariaDB نیست را می توان به راحتی با اجرای دستور نصب کرد:
sudo dnf install mariadb-server mariadb
درخت وابستگی:
Transaction Summary
================================================================================
Install 13 Packages
Total download size: 18 M
Installed size: 107 M
Is this ok [y/N]: y
پس از نصب، سرویس MariaDB را راه اندازی و فعال کنید:
sudo systemctl enable --now mariadb
بررسی کنید که آیا سرویس در حال اجرا است:
$ systemctl status mariadb
● mariadb.service - MariaDB 10.5 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-07-23 10:05:47 CEST; 2s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 18153 ExecStartPre=/usr/libexec/mariadb-check-socket (code=exited, status=0/SUCCESS)
Process: 18175 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
Process: 20589 ExecStartPost=/usr/libexec/mariadb-check-upgrade (code=exited, status=0/SUCCESS)
Main PID: 20448 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 12 (limit: 23441)
Memory: 78.5M
CPU: 268ms
CGroup: /system.slice/mariadb.service
└─20448 /usr/libexec/mariadbd --basedir=/usr
گزینه 2. پایگاه داده MySQL را در Rocky Linux 9 / AlmaLinux 9 نصب کنید
MySQL 8.0 که در 11 می 2021 منتشر شد، ویژگی های شگفت انگیز زیادی را ارائه می دهد که عبارتند از:
- فرهنگ لغت داده های تراکنش.
- عبارات جدول رایج
- توابع ویندوز
- پیشرفت های InnoDB و XML.
- بهبود گزارش خطا مانند شماره گذاری خطا و کاهش پرحرفی.
- پشتیبانی بهبود یافته برای داده های JSON و عملکرد ذخیره اسناد.
این نسخه در مخازن پیش فرض Rocky Linux 9 / AlmaLinux 9 ارائه شده است. با صدور دستور می توان آن را نصب کرد:
sudo dnf install mysql-server
درخت وابستگی:
Transaction Summary
================================================================================
Install 8 Packages
Total download size: 20 M
Installed size: 176 M
Is this ok [y/N]: y
پس از نصب، سرویس MySQL را راه اندازی و فعال کنید:
sudo systemctl start mysqld
sudo systemctl enable mysqld
بررسی کنید که آیا سرویس بر روی سیستم شما اجرا می شود یا خیر.
$ systemctl status mysqld
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2022-07-23 10:08:59 CEST; 8s ago
Main PID: 31834 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 23441)
Memory: 460.9M
CPU: 2.865s
CGroup: /system.slice/mysqld.service
└─31834 /usr/libexec/mysqld --basedir=/usr
#2. استفاده از MariaDB / MySQL در Rocky Linux 9|AlmaLinux 9
پس از نصب می توان از پایگاه داده های MariaDB/MySQL استفاده کرد. ابتدا نصب را با قرار دادن رمز عبور برای کاربر root ایمن کنید.
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
....
Please set the password for root here.
New password:
Re-enter new password:
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
......
- در MariaDB :
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none): Press_Enter
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] y
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
.....
Remove anonymous users? [Y/n] y
....
Disallow root login remotely? [Y/n] y
...
Remove test database and access to it? [Y/n] y
....
Reload privilege tables now? [Y/n] y
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
اکنون با استفاده از رمز عبور root ایجاد شده وارد شوید:
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.28 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.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
نسخه را با استفاده از دستور بررسی کنید:
mysql> SELECT VERSION();
خروجی نمونه:

نصب MariaDB / MySQL در Rocky Linux 9 | AlmaLinux 9
ایجاد کاربر و پایگاه داده:
برای ایجاد یک کاربر و پایگاه داده در MariaDB/MySQL، از دستورات زیر استفاده کنید و در صورت نیاز جایگزین کنید:
CREATE DATABASE sampledb;
CREATE USER 'test_user'@'%' IDENTIFIED BY 'Passw0rd';
GRANT ALL ON sampledb.* TO 'test_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
پس از این، شما یک پایگاه داده به نام sampledb و یک کاربر test_user خواهید داشت که می توان به عنوان swell از راه دور به آن دسترسی داشت.
پایگاه داده های موجود را بررسی کنید:
mysql> SHOW databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sampledb |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql>
مشاهده کاربران:
mysql> SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| test_user | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)
mysql>
برای حذف یک کاربر، از دستور با نحو زیر استفاده کنید:
DROP USER 'username'@'host';
جداول ایجاد کنید
سپس می توانیم داده ها را در جدول ایجاد و وارد کنیم. به عنوان مثال در جدول ایجاد شده در بالا:
USE sampledb;
CREATE TABLE playground (
equip_id serial PRIMARY KEY,
type varchar (50) NOT NULL,
color varchar (25) NOT NULL,
location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
install_date date
);
داده ها را در جدول ترجیحی وارد کنید:
INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2017-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2018-08-16');
مشاهده داده های اضافه شده:
mysql> SELECT * FROM playground;
+----------+-------+--------+-----------+--------------+
| equip_id | type | color | location | install_date |
+----------+-------+--------+-----------+--------------+
| 1 | slide | blue | south | 2017-04-28 |
| 2 | swing | yellow | northwest | 2018-08-16 |
+----------+-------+--------+-----------+--------------+
2 rows in set (0.00 sec)
mysql> exit
#3. پایگاه داده MariaDB / MySQL را پیکربندی کنید
پس از نصب، می توانید پایگاه داده MariaDB / MySQL خود را به دلخواه شخصی سازی کنید. چندین پیکربندی وجود دارد که می توانید با ویرایش فایل پیکربندی ذخیره شده در /etc/my.cnf.d/* انجام دهید.
ابتدا سرویس را متوقف کنید:
##MariaDB
sudo systemctl stop mariadb
##MySQL
sudo systemctl stop mysqld
اکنون با ویرایش فایل های زیر اقدام کنید و تنظیمات مورد نظر را انجام دهید:
##For MySQL
sudo vim /etc/my.cnf.d/mysql-server.cnf
##For MariaDB
sudo vim /etc/my.cnf.d/mariadb-server.cnf
تغییر آدرس گوش دادن MySQL/MariaDB
بهطور پیشفرض، MySQL و MariaDB هر دو در localhost گوش میدهند، اما اگر میخواهید از راه دور به پایگاه داده دسترسی داشته باشید، باید به آن اجازه دهید با افزودن/لغو نظر خط به تمام آدرسهای IP گوش دهد:
[mysqld]
bind-address=0.0.0.0
دایرکتوری داده MySQL/MariaDB را تغییر دهید
به طور پیش فرض، MariaDB و MySQL داده ها را در /var/lib/mysql/ ذخیره می کنند. می توانید پایگاه داده را طوری پیکربندی کنید که داده های آن را در یک مسیر سفارشی ذخیره کند. به عنوان مثال در /mnt/datastore
sudo mkdir /mnt/datastore
sudo chmod -R 777 /mnt/datastore/
sudo chown -R mysql:mysql /mnt/datastore
با ایجاد مسیر سفارشی، باید فایل های موجود در دایرکتوری قدیمی را با استفاده از دستور زیر در مسیر جدید کپی کنید:
sudo dnf install rsync -y
sudo rsync -av /var/lib/mysql/* /mnt/datastore
برای اینکه مسیر قابل دسترسی باشد، SELinux را مطابق شکل پیکربندی کنید:
sudo semanage fcontext -a -t mysqld_db_t '/mnt/datastore(/.*)?'
sudo restorecon -Rv /mnt/datastore
حالا فایل پیکربندی را باز کنید و دایرکتوری داده را مانند تصویر اضافه کنید:
- برای MySQL
[mysqld]
datadir= /mnt/mysql
socket= /mnt/mysql/mysql.sock
mysqlx_socket= /mnt/mysql/mysqlx.sock
[client]
socket= /mnt/mysql/mysql.sock
- برای MariaDB باید دو فایل را ویرایش کنید تا دایرکتوری داده را در خود جای دهد:
sudo vim /etc/my.cnf.d/mariadb-server.cnf
تغییرات زیر را در فایل اعمال کنید:
[mysqld]
datadir= /mnt/mysql
socket= /mnt/mysql/mysql.sock
mysqlx_socket= /mnt/mysql/mysqlx.sock
فایل را ذخیره کنید و همچنین فایل زیر را برای مشتریان در MariaDB ویرایش کنید.
sudo vim /etc/my.cnf.d/client.cnf
پورت و سوکت سفارشی را اضافه کنید:
[client]
socket= /mnt/mysql/mysql.sock
# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]
socket= /mnt/mysql/mysql.sock
یک پورت سفارشی را پیکربندی کنید
پورت پیش فرض استفاده شده توسط MySQL/MariaDB 3306 است. با این حال، می توانید پایگاه داده را برای استفاده از پورت دیگری پیکربندی کنید. به عنوان مثال 4545
فایل پیکربندی را باز کنید و این تنظیمات را برای اتصالات سرور و کلاینت انجام دهید.
- برای MySQL
[mysqld]
port=4545
[client]
port=4545
- برای MariaDB ، باید دو فایل را ویرایش کنید:
$ sudo vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
port=4545
پورت مشتری را ویرایش کنید.
$ sudo vim /etc/my.cnf.d/client.cnf
[client]
port=4545
[client-mariadb]
port=4545
SELinux را برای پورت سفارشی پیکربندی کنید:
sudo semanage port -a -t mysqld_port_t -p tcp 4545
سرویس ها را مجددا راه اندازی کنید
پس از انجام تغییرات، سرویس MySQL/MariaDB را راه اندازی کنید:
##MariaDB
sudo systemctl start mariadb
##MySQL
sudo systemctl start mysqld
بررسی تغییرات ایجاد شده:
$ sudo ss -plunt|grep 4545
tcp LISTEN 0 151 0.0.0.0:4545 0.0.0.0:* users:(("mysqld",pid=33606,fd=24))
اجازه دادن پورت تنظیم شده از طریق فایروال:
sudo firewall-cmd --add-port=<port>/tcp --permanent
sudo firewall-cmd --reload
به یاد داشته باشید که پورت را تعویض کنید کنید.
دسترسی به MySQL/MariaDB از راه دور
پس از پیکربندی آدرس گوش و پورت، میتوانید از راه دور از یک کلاینت MySQL به پایگاه داده دسترسی داشته باشید. به عنوان مثال، ما سعی می کنیم با استفاده از کاربر ایجاد شده از میزبان راه دور به پایگاه داده دسترسی پیدا کنیم:
mysql -h <IP_Address> -u <user> -p -P <port>
برای مثال، با استفاده از پورت پیشفرض MySQL به 3306 ، دستور به صورت زیر خواهد بود:
mysql -h 192.168.205.13 -u test_user -p -P 3306
خروجی نمونه:

نصب MariaDB / MySQL در Rocky Linux 9 | AlmaLinux 9
پس از پیکربندی یک پورت سفارشی، دستوری مطابق شکل خواهیم داشت.

نصب MariaDB / MySQL در Rocky Linux 9 | AlmaLinux 9
تنظیم و بهینه سازی عملکرد MariaDB/MySQL
هنگامی که با یک محیط بزرگ سروکار دارید، پایگاه داده MariaDB / MySQL می تواند مشکلات عملکردی داشته باشد. برای بهبود عملکرد پایگاه داده، ممکن است لازم باشد گزینه ها را تنظیم کنید. تنظیم عملکرد SQL را می توان به عنوان فرآیند به حداکثر رساندن سرعت پرس و جو در یک پایگاه داده رابطه ای تعریف کرد.
قبل از آن، باید چند منبع را ارزیابی کنید:
- ذخیره سازی : اگر از یک هارد دیسک سنتی استفاده می کنید، توصیه می شود برای بهبود عملکرد به درایو حالت جامد (SSD) ارتقا دهید. برای بررسی نرخ ورودی/خروجی دیسک می توانید از ابزارهایی مانند
iotop
یاsar
از بسته استفاده کنیدsysstat
- پردازنده : از این
top
دستور می توان برای اندازه گیری سرعت سیستم شما استفاده کرد. ممکن است از شما خواسته شود که فرآیندهای MySQL و درصد استفاده از پردازنده را بررسی کنید. - حافظه : امکان بهبود حافظه پنهان MySQL برای بهبود عملکرد وجود دارد. با این حال، لازم است که شما حافظه کافی روی سیستم خود داشته باشید
- شبکه : شبکه همچنین می تواند در اجرای کم نقش داشته باشد. باید اطمینان حاصل کنید که شبکه برای مدیریت بار کافی است.
تنظیم عملکرد SQL ممکن است شامل چندین تکنیک باشد مانند:
- نوشتن پرس و جوهای پایگاه داده کارآمدتر
- ساختار پایگاه داده برای بازیابی داده ها به طور کارآمدتر.
- بهینه سازی فایل های پیکربندی MySQL.
بهینه سازی فایل های پیکربندی MySQL شامل ویرایش فایل های /etc/mysql/my.cnf.d/* است. چندین پیکربندی در اینجا تعریف شده است:
- query_cache_size : این اندازه کش کوئری های MySQL است که منتظر اجرا هستند. توصیه می شود که مقادیر کوچک، حدود 100-200 مگابایت باشد
- max_connection : تعداد اتصالات مجاز به پایگاه داده
- innodb_buffer_pool_size : این پیکربندی برای تخصیص حافظه سیستم به عنوان کش داده برای پایگاه داده شما استفاده می شود.
- innodb_io_capacity : برای تنظیم نرخ ورودی/خروجی از دستگاه ذخیرهسازی شما استفاده میشود. این به طور مستقیم به نوع و سرعت درایو ذخیره سازی شما مربوط می شود.
- max_heap_table_size : محدودیت جدول ENGINE=MEMORY است که ایجاد می کنید
- LEAST(max_heap_table_size, tmp_table_size) : حدی است که می توان به جداول موقت ضمنی خاص اجازه داد که چقدر بزرگ باشند
این مقادیر را می توان به دلخواه تعریف کرد. مثلا:
[mysqld]
tmp_table_size=64M
max_heap_table_size=64M
پس از انجام تغییرات، سرویس را مجدداً راه اندازی کنید:
##MariaDB
sudo systemctl restart mariadb
##MySQL
sudo systemctl restart mysqld
همین است!
ما با موفقیت پایگاه داده MariaDB / MySQL را بر روی راکی لینوکس 9 / آلما لینوکس 9 نصب و پیکربندی کردیم. امیدوارم این اطلاعات آموزنده باشد.