我最近将系统从 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
无济于事。
找到一篇关于将用户行中的字段设置为“NULL”的帖子。plugin
我这样做了,但现在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)'
您可以作为 root 用户访问的原因可能是由于启用了UNIX 域套接字身份验证。鉴于
ALTER USER
命令失败,您可能正在运行 10.2 之前的 MariaDB。root
您可以通过复制授权来创建具有相同授权的替换用户SHOW GRANTS FOR 'root'@'localhost'
:例如,如果我想将我的用户命名为 as
backup-root
并将密码设置为password
,我将执行以下命令: