نصب 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 | 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 در 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 در 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.

پیشنهاد ویژه قائم هاست خرید وی پی اس اندروید با سیستم عامل های مختلف ویندوز و لینوکس ، همچنین با خرید هاست پرسرعت ایران می توانید از بالاترین سرعت ممکن بهرمند شوید ، جهت اطلاعات بیشتر و یا سوالات قبل از خرید از طریق ارسال تیکت به بخش فروش قائم هاست بصورت 24 ساعته با ما در ارتباط باشید.

بهینه سازی فایل های پیکربندی 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 نصب و پیکربندی کردیم. امیدوارم این اطلاعات آموزنده باشد.

سایر مطالب مرتبط »

5/5 - (20 امتیاز)