为什么升级到 Ubuntu 16.04 后不需要 root 密码即可访问 MariaDB?

为什么升级到 Ubuntu 16.04 后不需要 root 密码即可访问 MariaDB?

我最近将系统从 Ubuntu 14.04 升级到 16.04(mysql Ver 15.1 Distrib 10.0.36-MariaDB),发现 root 无需密码即可进入,例如:mysql -u root为空。

尝试通过 mysql 设置新密码,UPDATE mysql.user SET authentication_string = PASSWORD('supersekrit') WHERE User = 'root';但这并没有禁用空密码。还尝试运行,mysql_secure_installation但无济于事。

找一个邮政关于将plugin用户行中的字段设置为“NULL”。我这样做了,但现在 root 根本无法登录。

我点击了帖子中的 percona 链接,其中写道正确的方法是运行以下命令: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';. 这会导致错误消息 ->ERROR 1064 (42000): You have an error in your SQL syntax...

不太确定解决这个问题的正确方法是什么。有什么想法吗?

更新:设置 root mysql 帐户的密码后,Ubuntu 16.04 cron 守护程序现在在 logrotate 期间抛出错误。看起来这个问题是个兔子洞。我暂时清空了 root 密码,直到我能弄清楚 logrotate 出了什么问题。哎呀。

error: 'Access denied for user 'root'@'localhost' (using password: NO)'

答案1

你可以以 root 用户身份访问的原因可能是UNIX 域套接字身份验证已启用。鉴于ALTER USER命令失败,您可能正在运行 10.2 之前的 MariaDB。

root您可以通过复制以下授权来创建具有相同授权的替代用户SHOW GRANTS FOR 'root'@'localhost'

MariaDB [test]> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION       |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

例如,如果我想将我的用户名设为 backup-root并将密码设置为password,我可以执行以下操作:

CREATE USER 'backup-root'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'backup-root'@'localhost WITH GRANT OPTION;

相关内容