![为什么升级到 Ubuntu 16.04 后不需要 root 密码即可访问 MariaDB?](https://linux22.com/image/729570/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8D%87%E7%BA%A7%E5%88%B0%20Ubuntu%2016.04%20%E5%90%8E%E4%B8%8D%E9%9C%80%E8%A6%81%20root%20%E5%AF%86%E7%A0%81%E5%8D%B3%E5%8F%AF%E8%AE%BF%E9%97%AE%20MariaDB%EF%BC%9F.png)
我最近将系统从 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;