Thomas,
mariadb-server NEWS.Debian.gz says:
- Referencing the /etc/mysql/debian.cnf file is not advised anymore. It will
be deprecated in a future Debian release and has been obsolete anyway for
several years now since MariaDB in Debian introduced Unix socket
authentication for the root account in 2015.
...
-- Otto Kekäläinen <otto@debian.org> Thu, 17 Sep 2020 14:37:47 +0300
Below is a patch which removes references to /etc/mysql/debian.cnf .
In addition, the changed lines:
* all satisfy ShellCheck
* sometimes improve logic
By the way, I believe that /usr/sbin/automysqlbackup has no bashisms
and should change from "#!/bin/bash" to "#!/bin/sh" (dash).
Thank you!
Daniel Lewart
Urbana, Illinois
---
diff -ru a/etc/default/automysqlbackup b/etc/default/automysqlbackup
--- a/etc/default/automysqlbackup 2021-08-30 09:50:19.000000000 -0500
+++ b/etc/default/automysqlbackup 2023-12-15 00:00:00.000000000 -0600
@@ -1,13 +1,13 @@
# By default, the Debian version of automysqlbackup will use:
-# mysqldump --defaults-file=/etc/mysql/debian.cnf
+# mysqldump
# but you might want to overwrite with a specific user & pass.
# To do this, simply edit bellow.
# Username to access the MySQL server e.g. dbuser
-#USERNAME=`grep user /etc/mysql/debian.cnf | tail -n 1 | cut -d"=" -f2 | awk '{print $1}'`
+#USERNAME=dbuser
# Username to access the MySQL server e.g. password
-#PASSWORD=`grep password /etc/mysql/debian.cnf | tail -n 1 | cut -d"=" -f2 | awk '{print $1}'`
+#PASSWORD=password
# Host name (or IP address) of MySQL server e.g localhost
DBHOST=localhost
@@ -20,9 +20,10 @@
# and write your own.
# The following is a quick hack that will find the names of the databases by
# reading the mysql folder content. Feel free to replace by something else.
-# DBNAMES=`find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ `
+# DBNAMES=$(find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d/ -f5 | grep -Ev '^(mysql|performance_schema)$' | tr '\n' ' ' | sed 's/ $//')
+
# This one does a list of dbs using a MySQL statement.
-DBNAMES=`mysql --defaults-file=/etc/mysql/debian.cnf --execute="SHOW DATABASES" | awk '{print $1}' | grep -v ^Database$ | grep -v ^mysql$ | grep -v ^performance_schema$ | grep -v ^information_schema$ | tr \\\r\\\n ,\ `
+DBNAMES=$(mysql -BNe 'SHOW DATABASES' | grep -Ev '^(information_schema|mysql|performance_schema)$' | tr '\n' ' ' | sed 's/ $//')
# Backup directory location e.g /backups
# Folders inside this one will be created (daily, weekly, etc.), and the
diff -ru a/usr/sbin/automysqlbackup b/usr/sbin/automysqlbackup
--- a/usr/sbin/automysqlbackup 2021-08-30 09:50:19.000000000 -0500
+++ b/usr/sbin/automysqlbackup 2023-12-15 00:00:00.000000000 -0600
@@ -446,7 +446,7 @@
touch "$2.gz"
chmod 600 "$2.gz"
if [ -z "${USERNAME}" -o -z "${PASSWORD}" ] ; then
- mysqldump --defaults-file=/etc/mysql/debian.cnf $NEWOPT $1 | gzip -f > "$2.gz"
+ mysqldump "${NEWOPT}" "$1" | gzip -f > "$2.gz"
else
mysqldump --user=$USERNAME --password=$PASSWORD --host=$DBHOST $NEWOPT $1 | gzip -f > "$2.gz"
fi
@@ -455,7 +455,7 @@
touch "$2.bz2"
chmod 600 "$2.bz2"
if [ -z "${USERNAME}" -o -z "${PASSWORD}" ] ; then
- mysqldump --defaults-file=/etc/mysql/debian.cnf $NEWOPT $1 | gzip -f > "$2.bz2"
+ mysqldump "${NEWOPT}" "$1" | gzip -f > "$2.bz2"
else
mysqldump --user=$USERNAME --password=$PASSWORD --host=$DBHOST $NEWOPT $1 | gzip -f > "$2.bz2"
fi
@@ -464,7 +464,7 @@
touch $2
chmod 600 $2
if [ -z "${USERNAME}" -o -z "${PASSWORD}" ] ; then
- mysqldump --defaults-file=/etc/mysql/debian.cnf $NEWOPT $1 > $2
+ mysqldump "${NEWOPT}" "$1" > "$2"
compression $2
else
mysqldump --user=$USERNAME --password=$PASSWORD --host=$DBHOST $NEWOPT $1 > $2
@@ -532,7 +532,7 @@
# If backing up all DBs on the server
if [ "$DBNAMES" = "all" ]; then
if [ -z "${USERNAME}" -o -z "${PASSWORD}" ] ; then
- DBNAMES="`mysql --defaults-file=/etc/mysql/debian.cnf --batch --skip-column-names -e "show databases"| sed 's/ /%/g'`"
+ DBNAMES="$(mysql --batch --skip-column-names -e "SHOW DATABASES" | tr ' ' '%')"
else
DBNAMES="`mysql --user=$USERNAME --password=$PASSWORD --host=$DBHOST --batch --skip-column-names -e "show databases"| sed 's/ /%/g'`"
fi