mysqladmin pingコマンドは接続先のMySQL(この場合、-h127.0.0.1で接続先IPアドレス、-P3306で接続先ポート、-urootで接続ユーザ名を指定しています)にログイン要求を送信し、ログインに成功または認証拒否(ユーザ名とパスワードの組が不正)の応答を受け取った場合に成功します。ログインの成功はわかりやすいですが、認証拒否の場合、「ユーザ名とパスワードの組が不正であることを判断できるということはMySQLは稼働していると考えられる」ため、mysqladmin pingは成功したと見做されます("Error: 1040 Too many connections"などの「サーバーから拒否」のエラー番号もping成功と見なされます)。
それに対して、失敗した時の出力例は下記のようになります。
$ mysqladmin -h127.0.0.1 -P3306 -uroot ping
mysqladmin: connect to server at '127.0.0.1' failed
error: 'Can't connect to MySQL server on '127.0.0.1' (111)'
Check that mysqld is running on 127.0.0.1 and that the port is 3306.
You can check this by doing 'telnet 127.0.0.1 3306'
$ echo $?
1
$ perror 111
OS error code 111: Connection refused
接続に失敗した旨のメッセージと多少の診断メッセージ、失敗を意味するリターンコード("$?"が0以外)が得られました。注目するべきはmysqladmin pingコマンドの出力の2行目で、error: 'Can't connect to MySQL server on '127.0.0.1' (111)'のカッコの中、111というのが接続に失敗した理由です。
MySQLにバンドルされているperrorコマンドを利用すると、エラー番号111の意味を調べることができます。今回は「Connection refused」、ポートがLISTENされていない(=プロセスが起動していない)場合に出力される典型的なものでした。111の他にも110(「Connection timed out」、タイムアウトなのでMySQLが忙しいか通信経路が不安定な場合など)、113(「No route to host」、指定のIPアドレスに対する経路が存在しないためIPアドレス間違いかネットワーク障害など)といったいくつかのパターンがあります。
ただし、残念ながらmysqladmin pingコマンドも(psコマンドよりは便利に使えたとしても)、「mysqldプロセスが起動しており、MySQLプロトコルでしゃべりかけた場合にMySQLプロトコルで応答を返した」以上のことは判定できません。先ほども話に上げましたが、"Error: 1040 Too many connections"は、アプリケーションからすれば処理ができない異常系ですが、mysqladmin pingコマンドから見れば「mysqldが起動しており、MySQLプロトコルでしゃべりかけた場合にMySQLプロトコルで応答を返した」ので正常系です。テーブル間のデータの不整合、ロックの競合、過負荷などにより「接続はできてもアプリケーションは処理を継続できないケース」であっても、mysqladmin pingから見れば正常というケースは少なくないのです(これらMySQL内部の動作は、psコマンドやkill -0コマンドでも観測できません)。