#1058724 automysqlbackup: "Referencing the /etc/mysql/debian.cnf file is not advised anymore"

#1058724#5
Date:
2023-12-15 10:20:00 UTC
From:
To:
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