我最近将系统从 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;