当我以 root 身份连接时,“mysql”无需密码即可连接,尽管我已设置密码

当我以 root 身份连接时,“mysql”无需密码即可连接,尽管我已设置密码

当我以 root 身份登录时,“mysql”无需密码即可连接,尽管我已经设置了密码:

# mysqladmin -u root password 'whatever'
# mysql -u root -p
Enter password: (typing the 'whatever' above)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 4.1.22-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> Bye

但不幸的是这也发生了......

# mysql -u root 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25 to server version: 4.1.22-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> 

因此,即使我已经设置了密码,并且当我使用“-p”时它会被检查,但这并不是必要的!?!?

编辑:是我的 .my.cnf,里面有登录密码。删除它,一切正常。

答案1

也许你的 ~/.my.cnf 中有用户凭证

[客户]
用户=约翰
密码=smith

答案2

在我的例子中,MySQL root 用户正在使用套接字对等凭证可插入身份验证

据我了解,如果调用该mysql命令的 unix 用户与 MySQL 用户匹配,它将允许本地套接字(无远程)连接。因此,输入任何密码都不会产生任何效果,因为这种类型的身份验证不需要密码。

您可以查看是否有任何用户使用auth_socket插件。

select Host, User, plugin from mysql.user where plugin = 'auth_socket';

我使用的是 Ubuntu 18.04 并运行了该mysql_secure_installation脚本。

答案3

mysql> update user set plugin='' where User='root'; 
mysql> flush privileges;

相关内容