48 lines
1.4 KiB
Bash
48 lines
1.4 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
# If the first argument is 'mysqld', then start MariaDB
|
|
if [ "$1" = 'mysqld' ]; then
|
|
# Initialize the database if it doesn't exist
|
|
if [ ! -d "/var/lib/mysql/mysql" ]; then
|
|
echo "Initializing database..."
|
|
mysql_install_db --user=mysql --datadir=/var/lib/mysql --rpm
|
|
echo "Database initialized."
|
|
|
|
# Start MariaDB temporarily to set up initial configuration
|
|
mysqld --user=mysql --skip-networking &
|
|
pid="$!"
|
|
|
|
# Wait for MariaDB to start
|
|
while ! mysqladmin ping --silent; do
|
|
sleep 1
|
|
done
|
|
|
|
# Set up root user and any initial database
|
|
echo "Setting up initial database..."
|
|
mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}';"
|
|
if [ -n "$MYSQL_DATABASE" ]; then
|
|
mysql -e "CREATE DATABASE IF NOT EXISTS \`${MYSQL_DATABASE}\`;"
|
|
fi
|
|
if [ -n "$MYSQL_USER" ] && [ -n "$MYSQL_PASSWORD" ]; then
|
|
mysql -e "CREATE USER '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';"
|
|
mysql -e "GRANT ALL PRIVILEGES ON \`${MYSQL_DATABASE}\`.* TO '${MYSQL_USER}'@'%';"
|
|
fi
|
|
mysql -e "FLUSH PRIVILEGES;"
|
|
|
|
# Load initial SQL dump if init.sql exists
|
|
if [ -f "/usr/bin/local/init.sql" ]; then
|
|
echo "Loading initial SQL dump..."
|
|
mysql "${MYSQL_DATABASE}" < /usr/bin/local/init.sql
|
|
echo "Initial SQL dump loaded."
|
|
fi
|
|
|
|
# Stop temporary MariaDB instance
|
|
kill "$pid"
|
|
wait "$pid"
|
|
fi
|
|
|
|
echo "Starting MariaDB..."
|
|
fi
|
|
|
|
exec "$@" |