2013-08-30 27 views
3

即使密码失败,mysqladmin ping也会返回0,mysqlclient不会。这是Mysqladmin Developpers的错误吗?我不明白为什么Mysqladmin要求输入登录名/密码,因为即使您没有指定登录名,它也会返回0。mysqladmin ping错误代码

如果我尝试中mysqladmin平没有任何登录/密码:

# mysqladmin ping ; echo $? 

mysqladmin: connect to server at 'localhost' failed 
error: 'Access denied for user 'root'@'localhost' (using password: NO)' 
0

中mysqladmin给我一个登录错误,并告诉我,该服务器当前正在运行(0值),那么为什么要求,如果登录仍然给我答案?


当我做这样的事情:

#mysqladmin -uroot -pWrongPassword ping ; echo $? 

mysqladmin: connect to server at 'localhost' failed 
error: 'Access denied for user 'root'@'localhost' (using password: YES)' 
0

这回我0而不是1


现在,如果我停止MySQL服务器,然后再试一次:

# mysqladmin -uroot -pWrongPassword ping ; echo $? 

mysqladmin: connect to server at 'localhost' failed 
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' 
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists! 
1

它给我适当的价值,因为服务器停止,我们不关心错误的密码。


最后我做了的mysql和wrongpassword相同的测试:

# mysql -uroot -pWrongPassword mysql -sN -e "select * from user" ; echo $? 

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 
1

我知道这个命令的主要目的是测试MySQL服务器的可用性,但要求一个登录/密码没有按如果你仍然给出0的值,那么没有任何意义。

你认为这是一个错误?

回答

8

这不是一个错误。此行为是设计使然。

ping
检查服务器是否可用。如果服务器正在运行,mysqladmin的 返回状态为0,如果不是,则返回1。即使在出现拒绝访问等错误的情况下,这也是0 ,因为这意味着 服务器正在运行,但拒绝连接,这是与服务器未运行的 不同。

+1

虽然你可以使用'status'! – daGrevis