Automysqlbackup 不使用配置的密码

Automysqlbackup 不使用配置的密码

我有自动mysql备份安装在 Debian 上。我添加了 USERNAME 和 PASSWORD 到/etc/default/automysqlbackup,但是当 automysqlbackup 运行时,我得到了输出:

/etc/cron.daily/automysqlbackup:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO

就像我没有配置任何凭据一样。

automysqlbackup 配置是默认配置,最后添加了两行:

USERNAME=root
PASSWORD="the root password"

/etc/mysql/debian.cnf默认配置尝试从(使用 bash 代码片段中的 grep )获取凭据/etc/default/automysqlbackup,其中包含一条警告,提示该文件已被弃用,并且在新安装中不再包含任何管理员密码。

我尝试使用 strace 来运行 automysqlbackup,/etc/default/automysqlbackup即使不是由 cron 启动,它至少也可以读取数据。不过,它不使用密码。

答案1

问题在于在文件末尾附加用户名和密码,而该文件被视为 shellscript,并包含一些mysql命令来列出已经需要登录的数据库名称。

它还似乎debian.cnf通过查找如下数据库,做出了可用且包含所需凭据的有力假设:

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 ,\ `

这可能需要使用参数来$USERNAME代替$PASSWORD已弃用的默认文件。

我知道旧的 mysql/mariadb 包配置了一个维护用户,debian.cnf但是新安装不包含这样的帐户,因此在尝试列出数据库时脚本已经失败。

配置文件中已经包含一个似乎有效的注释掉的替代方案:

DBNAMES=`find /var/lib/mysql -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f5 | grep -v ^mysql\$ | tr \\\r\\\n ,\ `

我必须说,这两条线路对我来说看起来有点脆弱。我不确定这是否会在某个时候中断,并且整个 automysqlbackup 脚本或至少其配置可能不是最强大的解决方案。

相关内容