【问题标题】:mysqladmin ping error codemysqladmin ping 错误代码
【发布时间】:2013-09-02 14:08:48
【问题描述】:

即使密码失败,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值,那么要求登录名/密码没有任何意义。

你认为这是一个错误吗?

【问题讨论】:

    标签: mysql linux mysqladmin


    【解决方案1】:

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

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

    【讨论】:

    • 你可以使用status
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多