意外的 mysql -uroot 身份验证

意外的 mysql -uroot 身份验证

因此,unix root 用户可以无需密码连接到 mysql root 用户:

root@server $ mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 27
Server version: 5.7.13-0ubuntu0.16.04.2 (Ubuntu)

但是unix用户redmine不能:

root@server $ sudo -u redmine mysql -uroot
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

我猜测 mysqld 正在通过连接的 unix 域套接字检查 uid=1,但我在 mysql 文档中找不到对此的解释。(strace 显示 mysql shell 进程成功打开 unix 域套接字,并在收到服务器回复后将其关闭)

作为非 root unix 用户,如何以无密码的方式连接到数据库 root 用户?(请不要对我说“这不是一个好主意”)

答案1

也许 root 用户有一个/root/.my.cnf包含登录凭据的文件?您可以配置~redmine/.my.cnf以包含您的凭据:

[client]
password="yourpassword"

更多信息,请参阅MySQL 文档

相关内容