پرش به محتوا

MariaDB روی openSUSE Leap 16

MariaDB را با zypper نصب و امن کنید، پایگاه داده و کاربر برنامه بسازید، تنظیمات را در my.cnf.d بگذارید و بکاپ روزانه بگیرید.

openSUSE Leap 16سطح: مقدماتیبه‌روزرسانی: ۱۷ آبان ۱۴۰۵

۱. نصب

bash
sudo zypper install -y mariadb mariadb-client
sudo systemctl enable --now mariadb
mariadb --version

۲. امن‌سازی اولیه

bash
sudo mariadb-secure-installation

کاربران ناشناس و پایگاه داده‌ی test را حذف کنید و ورود root از راه دور را ببندید. در MariaDB جدید، root محلی با unix_socket وارد می‌شود، یعنی sudo mariadb بدون رمز کار می‌کند و این امن است.

۳. پایگاه داده و کاربر

bash
sudo mariadb <<'SQL'
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app'@'192.168.10.%' IDENTIFIED BY 'change-me';
GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'192.168.10.%';
FLUSH PRIVILEGES;
SQL

utf8mb4 برای متن فارسی و ایموجی لازم است. utf8 قدیمی فقط تا ۳ بایت را پشتیبانی می‌کند.

۴. تنظیمات

فایل اصلی /etc/my.cnf را دست نزنید و یک فایل در /etc/my.cnf.d/ بسازید. /etc/my.cnf.d/50-server.cnf:

ini
[mysqld]
bind-address = 192.168.10.35
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
innodb_buffer_pool_size = 2G
max_connections = 200
slow_query_log = 1
long_query_time = 2

innodb_buffer_pool_size را روی سرور اختصاصی حدود ۵۰ تا ۷۰ درصد RAM بگذارید.

bash
sudo 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

۵. بکاپ روزانه

bash
sudo mkdir -p /var/backups/mariadb
sudo tee /etc/cron.d/mariadb-backup >/dev/null <<'EOT'
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
EOT

--single-transaction بدون قفل کردن جدول‌های InnoDB یک نسخه‌ی سازگار می‌گیرد. بازیابی:

bash
gunzip -c /var/backups/mariadb/all-2026-11-08.sql.gz | sudo mariadb