mysqladmin ping错误代码

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

如果我尝试一个没有任何login/密码的Mysqladmin ping:

  #mysqladmin ping;  echo $?

 mysqladmin:在'localhost'连接服务器失败
错误:'拒绝访问用户root'@'localhost'(使用密码:NO)'
 0 

Mysqladmin给我一个login错误,并告诉我,服务器正在运行(0值),所以为什么要求login,如果它仍然给我答案?

当我做这样的事情时:

  #mysqladmin -uroot -pWrongPassword ping;  echo $?

 mysqladmin:在'localhost'连接服务器失败
错误:'拒绝用户root'@'localhost'(使用密码:YES)'
 0 

这返回我0而不是1。

现在,如果我停止MySQL服务器,并再次尝试:

  #mysqladmin -uroot -pWrongPassword ping;  echo $?

 mysqladmin:在'localhost'连接服务器失败
错误:'无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)'
检查mysqld是否正在运行,并且套接字'/var/run/mysqld/mysqld.sock'存在!
 1 

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

最后,我用Mysqlclient和一个错误的密码进行了相同的testing:

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

错误1045(28000):拒绝访问用户'root'@'localhost'(使用密码:是)
 1 

我知道这个命令的主要目的是testingmysql服务器的可用性,但要求login名/密码没有任何意义,如果你仍然给0值。

你认为这是一个错误?

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


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