====== Information ======
* MariaDB ((https://mariadb.org/about))
* [[Information:Realm of Espionage]]
===== Prerequisites =====
* [[linux;distros;server;fedora_server|Fedora Server]]
* [[linux;distros;fedora_workstation_gnome|Fedora Workstation]] ((for ''localhost'' game servers))
===== Resources =====
* https://mariadb.com/kb/en/configuring-mariadb-with-option-files/
* https://mariadb.com/kb/en/legacy-clients-and-utilities/
====== Settings ======
* Settings being done before installation is intentional
sudo mkdir -p '/etc/my.cnf.d' && sudo -e '/etc/my.cnf.d/custom.cnf'
[client]
default-character-set = 'utf8mb4'
[mariadb-client]
default-character-set = 'utf8mb4'
[mariadbd]
character-set-client-handshake = 'FALSE'
character-set-server = 'utf8mb4'
collation-server = 'utf8mb4_unicode_ci'
init-connect='SET NAMES utf8mb4'
expire_logs_days = '7'
max_binlog_size = '100M'
skip-networking = 'On'
table_definition_cache = '1400'
==== Verify =====
****
sudo mariadb-admin variables | egrep 'utf8|networking|socket'
====== Dependencies ======
****
sudo dnf install 'mariadb-server'
====== Initial Setup ======
****
sudo systemctl enable 'mariadb' --now && sudo mariadb-secure-installation
====== Database Repair and Optimization ======
===== One-shot =====
****
sudo mariadb-check --optimize --all-databases --force --extended --auto-repair
===== Create MySQL User =====
sudo mariadb
CREATE USER 'maintenance'@'localhost' IDENTIFIED BY 'x';
GRANT SELECT, INSERT ON *.* to 'maintenance'@'localhost';
FLUSH PRIVILEGES;
EXIT
===== Authentication File =====
sudo mkdir -p '/var/lib/mysql/auth' && sudo -e '/var/lib/mysql/auth/maintenance' && sudo chown -v -R 'mysql':'mysql' '/var/lib/mysql/auth' && sudo chmod -v '600' '/var/lib/mysql/auth/maintenance' && sync
[mariadb-check]
user=maintenance
password=x
===== Service =====
sudo -e '/etc/systemd/system/db-m.service'
[Service]
User=mysql
Group=mysql
Type=oneshot
ExecStart='/usr/bin/mariadb-check' --defaults-extra-file='/var/lib/mysql/auth/maintenance' --optimize --all-databases --force --extended --auto-repair
ExecStartPost='/usr/bin/sync'
===== Timer =====
sudo -e '/etc/systemd/system/db-m.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'db-m.timer' --now && sudo systemctl start 'db-m' && sudo systemctl status 'db-m' -l
[Unit]
Description=MariaDB Database Check, Repair, and Optimization
After=mariadb.service
[Timer]
OnCalendar=weekly
Persistent=true
[Install]
WantedBy=timers.target
====== Notable Commands ======
===== Show Users on Server =====
****
select User,Host from mysql.user;
===== Socket File =====
****
/var/lib/mysql/mysql.sock