mysqladmin ping错误代码

时间:2013-08-30 00:01:58

标签: mysql linux mysqladmin

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

如果我在没有任何登录名/密码的情况下尝试Mysqladmin ping:

# 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

它给了我正确的价值,因为服务器已停止,我们不关心错误的密码。

最后我用Mysqlclient和一个错误的密码进行了同样的测试:

# 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值,则要求登录/密码没有任何意义。

你认为这是一个错误吗?

1 个答案:

答案 0 :(得分:8)

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

  

<强> ping
  检查服务器是否可用。返回状态来自   如果服务器正在运行,则mysqladmin为0,否则为1。这是0   即使在拒绝访问等错误的情况下也是如此,因为这意味着   服务器正在运行但拒绝连接,这是   不同于服务器没有运行。