当我以 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;