mysqladmin ping は、パスワードの失敗があっても 0 を返しますが、mysqlclient はそうではありません。これは Mysqladmin 開発者の間違いですか? ログインを指定しなくても 0 が返されるため、Mysqladmin がログイン/パスワードを要求する理由がわかりません。
ログイン/パスワードなしで Mysqladmin ping を実行すると、次のようになります。
# mysqladmin ping ; エコー $? mysqladmin: 'localhost' でサーバーに接続できませんでした エラー: 'ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワードを使用: NO)' 0
Mysqladmin でログイン エラーが発生し、サーバーが現在実行中である (0 値) と表示されるのに、それでも答えが返ってくるのになぜログインを要求するのでしょうか?
私がこのようなことをすると:
#mysqladmin -uroot -pWrongPassword ping ; エコー $? mysqladmin: 'localhost' でサーバーに接続できませんでした エラー: 'ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワードを使用: YES)' 0
これは 1 ではなく 0 を返します。
ここで、mysql サーバーを停止して再試行すると、次のようになります。
# mysqladmin -uroot -pWrongPassword ping ; エコー $? mysqladmin: 'localhost' でサーバーに接続できませんでした エラー:「ソケット '/var/run/mysqld/mysqld.sock' を介してローカル MySQL サーバーに接続できません (2)」 mysqld が実行中であること、およびソケット '/var/run/mysqld/mysqld.sock' が存在することを確認してください! 1
サーバーが停止しているため、適切な値が得られます。間違ったパスワードは気にしません。
最後に、Mysqlclient と wrongpassword で同じテストを行いました:
# mysql -uroot -pWrongPassword mysql -sN -e "select * from user" ; エコー $? エラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワードを使用: YES) 1
このコマンドの主な目的は mysql サーバーの可用性をテストすることであることはわかっていますが、それでも値 0 を指定した場合、ログイン/パスワードを要求しても意味がありません。
バグだと思いますか?