从Linux命令行测试MySQL凭据?


Answers:


5

@Phil的答案@ Mr.Brownstone的答案足以满足您的问题,因此对他们两个都+1。

对于以下内容,假设您使用用户名登录 myuser

连接到mysql后,应运行以下查询:

SELECT USER(),CURRENT_USER();

有时,它们是不同的。这可以让您深入了解为什么允许您登录mysql。

这是您需要运行的另一个查询:

SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';

这将向您显示允许您以身份登录的方式myuser

如果看到'myuser'@'localhost',则可以从DB Server内部进行身份验证。

如果看到'myuser'@'127.0.0.1'和看不到'myuser'@'localhost',则可以再次从DB Server内部进行身份验证,但是必须--protocol=tcp从命令行指定。

如果看到'myuser'@'%',则可以从任何服务器进行远程登录。

如果看到'myuse'r@'10.20.30,%',则只能从10.20.30。%netblock中进行远程登录。

一旦看到了“ mysql.user”为用户提供的功能,您可能希望以一种方式而非另一种方式允许或限制myuser登录。

如果只想检查密码是否myuserwhateverpassword,则可以执行以下操作:

SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');

您可以从命令行进行如下检查:

PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`

如果您不是,root并且只想测试myuser,则可以执行以下操作:

PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`

如果您得到1,则验证myuser的密码是否正确。


13
mysql -h host -u user -p<whatever> -e"quit"

这使您可以使用与以编程方式向服务器发送查询相同的连接字符串。您可以添加|| exit 1到最后以对无效参数自动退出。/dev/null如果您不喜欢自动生成的MySQL错误消息,则可能还需要将stderr重定向到。


6

您可以使用以下命令(假设您在PATH中设置了mysql):

mysql -h主机-u用户-p

只需用正确的值替换主机用户,然后将提示您输入密码。


2
我想以编程方式进行检查。就像返回true或false的东西一样。
杰克·威尔逊

2
mysql --user=user_name --password=your_password dbname

您的问题是否那么简单,或者是否需要测试特定案例?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.