fix: restore MariaDB definers after backup recovery

Recreate and reset the accounts required by restored RomM views, triggers, and loopback database access before MariaDB accepts network connections.

Release the restore fix as 5.1.0:10.
This commit is contained in:
2026-08-13 11:11:36 -05:00
parent d0049cf1b4
commit d6bcfefa5f
3 changed files with 44 additions and 9 deletions
+6 -3
View File
@@ -1,10 +1,13 @@
FROM mariadb:11.4.5@sha256:49117dcc565cf51aa57ac5fca59ab31213402ff0eae6ffc13c46a37b938f7e4b
# start-sdk 2.0.9's logical backup helper invokes the legacy MySQL command
# names. MariaDB 11.4 ships only mariadb-* names, so expose compatibility
# aliases until these commands are configurable by the SDK.
RUN ln -s /usr/bin/mariadb-admin /usr/local/bin/mysqladmin \
&& ln -s /usr/bin/mariadb-dump /usr/local/bin/mysqldump \
&& ln -s /usr/bin/mariadb /usr/local/bin/mysql \
&& ln -s /usr/bin/mariadb-install-db /usr/local/bin/mysql_install_db \
&& ln -s /usr/sbin/mariadbd /usr/local/bin/mysqld
COPY startos-entrypoint.sh /usr/local/bin/startos-entrypoint.sh
ENTRYPOINT ["/usr/local/bin/startos-entrypoint.sh"]
CMD ["mariadbd"]
+32
View File
@@ -0,0 +1,32 @@
#!/bin/sh
set -eu
/usr/local/bin/docker-entrypoint.sh "$@" --skip-networking &
server_pid=$!
trap 'kill -TERM "$server_pid" 2>/dev/null || true; wait "$server_pid"' TERM INT
root_password=''
until {
if mariadb --protocol=socket --user=root --password="$MARIADB_ROOT_PASSWORD" --execute 'SELECT 1' >/dev/null 2>&1; then
root_password="$MARIADB_ROOT_PASSWORD"
elif mariadb --protocol=socket --user=root --password="$MARIADB_PASSWORD" --execute 'SELECT 1' >/dev/null 2>&1; then
root_password="$MARIADB_PASSWORD"
else
false
fi
}; do
if ! kill -0 "$server_pid" 2>/dev/null; then
wait "$server_pid"
exit $?
fi
sleep 1
done
mariadb --protocol=socket --user=root --password="$root_password" --execute "CREATE USER IF NOT EXISTS 'romm'@'%' IDENTIFIED BY '$MARIADB_PASSWORD'; ALTER USER 'romm'@'%' IDENTIFIED BY '$MARIADB_PASSWORD'; GRANT ALL PRIVILEGES ON romm.* TO 'romm'@'%'; CREATE USER IF NOT EXISTS 'romm'@'127.0.0.1' IDENTIFIED BY '$MARIADB_PASSWORD'; ALTER USER 'romm'@'127.0.0.1' IDENTIFIED BY '$MARIADB_PASSWORD'; GRANT ALL PRIVILEGES ON romm.* TO 'romm'@'127.0.0.1';"
kill -TERM "$server_pid"
wait "$server_pid"
exec /usr/local/bin/docker-entrypoint.sh "$@"