gpt4 book ai didi

Mysql 命令行显示使用 --password 时拒绝访问 @'172.X',但交互时则不然

转载 作者:行者123 更新时间:2023-11-29 18:25:14 25 4
gpt4 key购买 nike

不确定为什么会发生这种情况。

我的用户拥有正确的密码/权限(其中主机为“%”)

如果我这样运行命令:

mysql -h myhost -u myuser -p

密码:

连接。

但是如果我这样做:

mysql -h myhost -u myuser --password=

用户“myuser”@“172.xxx”的访问被拒绝 <-- 内部 IP

不知道为什么会发生这种情况,而且我似乎不知道如何解决它。将其添加为 172.% 的主机似乎也不起作用。

提前致谢。

最佳答案

来自man mysql(强调我的):

SYNOPSIS
   mysql [options] db_name

--password[=password], -p[password]
The password to use when connecting to the server. If you use the short option form (-p), you cannot have a space between the option and the password. If you omit the password value following the --password or -p option on the command line, mysql prompts for one. [...]

让我们集中讨论您提到的第一个命令:

mysql -h myhost -u myuser -p Password

你说这可行,但实际上不应该。根据手册,-p和密码之间不能有空格。如果有一个(如您的情况),密码将仅被解释为附加命令行参数(在本例中:最后一个命令行参数)。

另一方面,根据手册,最后一个命令行参数是要使用的数据库的名称。

因此,根据我对手册的理解,输入上面显示的命令时应该发生以下情况:

MySQL 客户端应连接到 myhost,然后(在命令行上)询问 myuser 的密码(因为 -p 是从其角度来看,没有给出实际密码)。如果密码输入正确,应该登录myuser并立即切换到以Password(即最后一个命令行参数)为名称的数据库。

如果它立即连接而没有提示输入 myuser 的密码(如您所写),那么 myuser 可能还没有密码。

在每种情况下,实际登录完成后,您都应该收到一条错误消息,因为可能不存在以密码(即最后一个命令行参数)作为名称的数据库。请问您登录后是否出现这样的错误信息,以及是否存在以Password(即最后一个命令行参数)为名称的数据库?

如果我们知道上面显示的命令起作用(尽管它不应该起作用)的原因,那么我们就会知道您的第二个命令(mysql -h myhost -u myuser --password=)的原因失败。

编辑 1(编辑问题后)

此行为是预期的。说 --password= 在形式上与说 --password='' 相同;换句话说,您告诉 MySQL 客户端应该使用空字符串作为密码。

如果您希望它提示输入密码,则只需使用 --password (不带等号)即可。您的命令行将是:

mysql -h myhost -u myuser --password

关于Mysql 命令行显示使用 --password 时拒绝访问 @'172.X',但交互时则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46249446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com