mysqladmin ping错误代码

Ark*_*rka 4 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值,则要求登录/密码没有任何意义.

你认为这是一个错误吗?

pet*_*erm 8

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

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

  • 不过你可以使用“状态”! (2认同)