我在MySQL 5.7和MySQL 8服务器上使用相同的密码和相同的mysql_native_password插件为“joe '@”%“创建了一个条目,用于这些测试。
MySQL 5.7中的“mysql”二进制文件在我以普通用户身份连接时按预期使用“-p”:
# on the MySQL 5.7 localhost
$ mysql -u joe -h localhost -P 3306 -p
Enter password:
# on the MySQL 5.7 localhost to the MySQL 8 remote host
$ mysql -u joe -h remotehost -P 3306 -p
Enter password:
或者作为.my.cnf中定义的root用户(允许您在不传递用户/密码信息的情况下进行连接):
# on the MySQL 5.7 localhost using the root user defined in .my.cnf
$ mysql -u root -p
Enter password:
但MySQL 8中的“mysql”二进制文件似乎不支持“-p,”而是立即抛出一个错误:
# on the MySQL 8 local host
$ mysql -u joe -h localhost -P 3306 -p
ERROR 1045 (28000): Access denied for user 'joe'@'localhost' (using password: YES)
# on the MySQL 8 local host to the MySQL 5.7 remote host
$ mysql -u joe -h remotehost -P 3306 -p
ERROR 1045 (28000): Access denied for user 'joe'@'remotehost' (using password: YES)
而作为.my.cnf中定义的root用户,则不执行,但连接成功:
# on the MySQL 8 local host using the root user defined in .my.cnf
$ mysql -u root -p
Welcome to the MySQL monitor.
将“joe”的凭据放入.my.cnf中,可以很好地连接(确认密码正确):
$ mysql -u joe -p
Welcome to the MySQL monitor.
我很困惑,期待着被一个简单的解决方案所困扰:)
解决方法:mysql --no-defaults
将遵循-p
2条答案
按热度按时间yvfmudvl1#
这是8.0.29中引入的错误,已在8.0.31中修复。
版本说明指出:“在MySQL 8.0.29中修复了一个错误后,如果在选项文件中提供了密码,则在登录时指定了-p选项,mysql客户端不会提示输入密码。现在,当指定了-p选项并使用指定的密码时,客户端总是提示输入密码,即使从选项文件填充了替代密码。(错误号107205、错误号34134984)”
虽然我的场景是从不同的Angular --尝试使用-u和-p连接到远程服务器--但是8.0.31客户机现在如预期的那样提供了Password提示。
gdrx4gfi2#
错误:错误1045(28000):用户'joe'@'localhost'的访问被拒绝
查看用户表,从mysql.user中选择主机、用户;