即使密码失败,Mysqladmin ping 也会返回 0,而 mysqlclient 不会。这是Mysqladmin Developpers的错误吗?我不明白为什么 Mysqladmin 要求输入登录名/密码,因为即使您没有指定登录名,它也会返回 0。
如果我在没有任何登录名/密码的情况下尝试 Mysqladmin ping:
#mysqladmin ping ; 回声$? mysqladmin:连接到“localhost”的服务器失败 错误:'用户'root'@'localhost'的访问被拒绝(使用密码:NO)' 0
Mysqladmin 给我一个登录错误并告诉我服务器当前正在运行(0 值),那么如果它仍然给我答案,为什么还要要求登录呢?
当我做这样的事情时:
#mysqladmin -uroot -pWrongPassword ping ; 回声$? mysqladmin:连接到“localhost”的服务器失败 错误:'用户'root'@'localhost'的访问被拒绝(使用密码:YES)' 0
这返回我 0 而不是 1。
现在,如果我停止 mysql 服务器并重试:
# mysqladmin -uroot -pWrongPassword ping ; 回声$? mysqladmin:连接到“localhost”的服务器失败 错误:'无法通过套接字'/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器' 检查 mysqld 是否正在运行并且套接字:'/var/run/mysqld/mysqld.sock' 存在! 1
它给了我正确的值,因为服务器已停止,我们不在乎密码错误。
最后我用 Mysqlclient 和一个错误的密码做了同样的测试:
# mysql -uroot -pWrongPassword mysql -sN -e "select * from user" ; 回声$? 错误 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:是) 1
我知道这个命令的主要目的是测试 mysql 服务器的可用性,但是如果你仍然给出 0 值,那么询问登录名/密码没有任何意义。
你认为这是一个错误吗?