即使密码失败,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值,则要求登录/密码没有任何意义。
你认为这是一个错误吗?
答案 0 :(得分:8)
这不是一个错误。这种行为是设计使然。
<强> ping 强>
检查服务器是否可用。返回状态来自 如果服务器正在运行,则mysqladmin为0,否则为1。这是0 即使在拒绝访问等错误的情况下也是如此,因为这意味着 服务器正在运行但拒绝连接,这是 不同于服务器没有运行。