Dotfiles/setup/modules/optional-Modules/apps/mysql.sh

26 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
# Exit immediately on error, treat unset variables as errors, propagate pipe failures.
set -euo pipefail
# Load shared log/warn/skip helpers from the installer library.
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
log "Installing MariaDB..."
# Arch ships MariaDB as the default MySQL-compatible database server.
sudo pacman -S --noconfirm --needed mariadb
# Guard against re-initialising an existing database; the mysql/ subdirectory
# is created by mariadb-install-db and its presence means the data dir is ready.
if [[ ! -d /var/lib/mysql/mysql ]]; then
log "Initialising MariaDB data directory..."
# mariadb-install-db creates the system tables under /var/lib/mysql,
# running as the dedicated mysql system user for correct file ownership.
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
else
skip "MariaDB data directory already initialised."
fi
log "Enabling MariaDB service..."
# enable --now: persist across reboots and start the daemon in the current session.
enable_service mariadb.service; start_service mariadb.service
log "MariaDB installed and running."