۱. نصب
dnf info mariadb-server | grep -E '^(Version|Release)'
sudo dnf install -y mariadb-server
sudo systemctl enable --now mariadb
sudo mariadb-secure-installation۲. پایگاه داده و کاربر
sudo mariadb <<'SQL'
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app'@'192.168.10.%' IDENTIFIED BY 'change-me';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP ON appdb.* TO 'app'@'192.168.10.%';
SQLبرای کاربر برنامه فقط دسترسیهای لازم را بدهید، نه ALL PRIVILEGES روی *.*.
۳. دسترسی شبکه
/etc/my.cnf.d/mariadb-server.cnf، در بخش [mysqld]:
bind-address = 192.168.10.26
character-set-server = utf8mb4
innodb_buffer_pool_size = 2Gsudo systemctl restart mariadb
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" service name="mysql" accept'
sudo firewall-cmd --reload۴. انتقال پوشهی داده به دیسک دیگر
این همان جایی است که SELinux بیشتر وقتها جلوی کار را میگیرد. ترتیب درست:
sudo systemctl stop mariadb
sudo rsync -aX /var/lib/mysql/ /data/mysql/
sudo semanage fcontext -a -t mysqld_db_t '/data/mysql(/.*)?'
sudo restorecon -Rv /data/mysqlدر /etc/my.cnf.d/mariadb-server.cnf مسیرها را عوض کنید:
datadir = /data/mysql
socket = /var/lib/mysql/mysql.sockسوکت در جای قبلی میماند تا برنامههای محلی به تغییر نیاز نداشته باشند.
sudo systemctl start mariadb
sudo mariadb -e 'select @@datadir'اگر سرویس بالا نیامد، دلیل را ببینید: sudo ausearch -m avc -c mariadbd -ts recent.
۵. بکاپ
sudo mkdir -p /var/backups/mariadb
echo '15 2 * * * root mariadb-dump --single-transaction --routines --all-databases | gzip > /var/backups/mariadb/all-$(date +\%F).sql.gz && find /var/backups/mariadb -mtime +14 -delete' | sudo tee /etc/cron.d/mariadb-backup