I'm upgrading a few mysql (MariaDB) hosts from Ubuntu 14.04 to 16.04 and noticed mysql_secure_installation doesn't seem to set a root password on the DB, even though it prompted me for it.
I changed the root pass from the mysql prompt but later that evening, the logrotate process threw some errors out via email:
/etc/cron.daily/logrotate:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
error: error running shared postrotate script for '/var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/mariadb-slow.log /var/log/mysql/error.log '
run-parts: /etc/cron.daily/logrotate exited with return code 1
I checked the /etc/logrotate.d/mysql-server logrotate script and it's calling mysqladmin:
...
# If this fails, check debian.conf!
mysqladmin --defaults-file=/etc/mysql/debian.cnf --local flush-error-log \
flush-engine-log flush-general-log flush-slow-log
...
Since the comment says to check debian.conf, I checked it:
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password =
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password =
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
So.. debian.cnf doesn't have a password set for root by default. In 14.04 this file is populated with the debian-sys-maint account, not root.
I could go back and set my root password in mysql, and then drop that password into /etc/mysql/debian.cnf but I'm really wondering now if something got botched on the install that messed up the debian-sys-main account or is this just the "new" way Mysql is installed?