mysqladminコマンドでMySQLを管理する方法|ステータス確認・フラッシュ・シャットダウンの実務手順

運営:リナックスマスター.JP(代表 宮崎智広)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Linuxtips > データーベース管理 > mysqladminコマンドでMySQLを管理する方法|ステータス確認・フラッシュ・シャットダウンの実務手順
「mysqladmin というコマンドを聞いたことはあるけれど、実際にどう使うのかわからない」——そう感じているLinuxサーバー管理者の方は多いはずです。

MySQLには、サーバーの管理操作をコマンドラインから実行するための専用ツール mysqladmin が付属しています。接続確認・ステータス表示・ログフラッシュ・シャットダウンなど、現場で頻繁に使う操作をワンコマンドで実行できます。

この記事では、Rocky Linux 9系/Ubuntu 24.04 LTSを想定環境として、mysqladmin の基本的な接続方法から実務でよく使うコマンドの書き方・出力例まで解説します。

この記事のポイント

・mysqladminはMySQL付属の管理CLIツールで別途インストール不要
・mysqladmin pingでサーバーの生存確認が数秒でできる
・flush-logsでバイナリログをローテート、flush-privilegesで権限を即時反映できる
・--defaults-extra-fileでパスワードをファイルから安全に渡す方法も解説する


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

mysqladminとは何か|MySQLサーバー管理専用のCLIツール

mysqladmin は、MySQLサーバーのインストールに同梱されているコマンドラインツールです。サーバーへの接続確認・稼働状態の表示・内部変数のフラッシュ・シャットダウンなど、DB管理者が日常的に行う管理操作をSQLを使わずに実行できます。

MySQLのクライアントパッケージ(mysql-client または mysql パッケージ)をインストールした時点で利用可能になるため、別途インストール作業は不要です。Rocky Linux 9系では mysql パッケージに同梱されており、Ubuntu 24.04 LTSでは mysql-client-core-8.0 に含まれています。

mysqladminの基本的な使い方|接続オプションと認証

mysqladmin の基本構文は次のとおりです。

mysqladmin [接続オプション] コマンド [コマンドオプション]

よく使う接続オプションは以下のとおりです。

・-h ホスト名:接続先のホスト名またはIPアドレス(省略時はlocalhost)
・-P ポート番号:TCPポート(省略時は3306)
・-u ユーザー名:MySQLのユーザー名
・-p:パスワードを対話入力で求める(引数なしが推奨)
・--defaults-extra-file=ファイル:認証情報をファイルから読み込む(後述)

コマンド名は省略可能です。たとえば processlist は proc と短縮できます。ただし現場では誤解のない完全形式を使うほうが保守性が高まります。

1. ヘルプ表示でコマンド一覧を確認する

mysqladmin --help を実行すると、利用可能なコマンドの一覧が表示されます。コマンドが多いため、初めて使う場合は全体像を把握するために一度確認しておくとよいでしょう。

mysqladmin --help

出力例(環境により異なります):

mysqladmin Ver 8.0.xx Distrib 8.0.xx, for Linux on x86_64 ... Where command is a one or more of: (Commands may be shortened) create databasename Create a new database drop databasename Delete a database and all its tables extended-status Gives an extended status message from the server flush-logs Flush all logs flush-privileges Reload grant tables (same as reload) flush-status Clear status variables flush-tables Flush all tables kill id,id,... Kill mysql threads password [new-password] Change old password to new-password ping Check if mysqld is alive processlist Show list of active threads in server reload Reload grant tables shutdown Take server down status Gives a short status message from the server variables Prints variables available version Get version info from server

サーバーの状態を確認する

1. pingでサーバーの応答を確認する

mysqladmin ping は、MySQLサーバーが起動して接続を受け付けているかを最短で確認できるコマンドです。スクリプトからの死活監視や、サービス再起動後の確認によく使います。

mysqladmin -u root -p ping

出力例(環境により異なります):

Enter password: mysqld is alive

サーバーが停止中または接続を拒否している場合は次のようなエラーになります(後述のトラブルシュートを参照)。

mysqladmin: connect to server at 'localhost' failed error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)' Check that mysqld is running and that the socket: '/var/lib/mysql/mysql.sock' exists!

2. statusでスレッドや稼働時間を確認する

mysqladmin status はサーバーの稼働時間・スレッド数・処理クエリ数などのサマリーを表示します。

mysqladmin -u root -p status

出力例(環境により異なります):

Uptime: 86400 Threads: 2 Questions: 15432 Slow queries: 0 Opens: 120 Flush tables: 1 Open tables: 113 Queries per second avg: 0.179

・Uptime:起動からの経過時間(秒)
・Threads:現在の接続スレッド数
・Slow queries:実行時間が long_query_time を超えたクエリ数(0が理想)
・Queries per second avg:平均QPS(クエリ毎秒)

より詳細な変数情報を確認したい場合は mysqladmin -u root -p extended-status を使うと、Com_select や Innodb_buffer_pool_reads など内部カウンタが一覧表示されます。

3. processlistで接続中プロセスを確認する

mysqladmin processlist は、現在MySQLに接続しているセッションの一覧を表示します。長時間実行中のクエリや、スリープ状態のまま残っているコネクションを素早く確認できます。

mysqladmin -u root -p processlist

出力例(環境により異なります):

+----+------+-----------+----+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+----+---------+------+-------+------------------+ | 8 | root | localhost | | Query | 0 | init | show processlist | +----+------+-----------+----+---------+------+-------+------------------+

特定のプロセスIDを強制終了したい場合は mysqladmin kill プロセスID を使います。複数指定する場合はカンマ区切りで mysqladmin kill 8,9,10 のように書きます。

サーバーの管理操作を実行する

1. flush-logsでバイナリログをローテートする

バイナリログをローテートして新しいログファイルを開始します。mysqldump でのバックアップ直後に新しいバイナリログを開始したい場合など、定期バックアップフローの中でよく使います。

mysqladmin -u root -p flush-logs

実行後、MySQL CLIから SHOW MASTER STATUS; でバイナリログのファイル名と番号が進んでいることを確認できます。

2. flush-tablesで全テーブルのキャッシュをフラッシュする

flush-tables は、開いているすべてのテーブルをクローズしてキャッシュをフラッシュします。ファイルシステムレベルのコールドバックアップの前処理としても使われます。

mysqladmin -u root -p flush-tables

3. flush-privilegesでGRANT設定を即時反映する

GRANT や REVOKE 文でユーザー権限を変更した場合、flush-privileges(reload と同義)を実行するとメモリ上の権限テーブルが再読み込みされます。

mysqladmin -u root -p flush-privileges

なお、MySQL 5.7.2以降は GRANT/REVOKE 実行後に自動で権限が反映されるため、通常は明示的な flush-privileges は不要です。my.cnf を直接変更してユーザーテーブルを書き換えた場合には引き続き必要になります。

4. shutdownでMySQLサーバーを安全に停止する

mysqladmin shutdown は、MySQLサーバーを安全にシャットダウンします。実行中のトランザクションが完了してからサーバーが停止するため、強制終了によるデータ破損のリスクを抑えられます。

mysqladmin -u root -p shutdown

実運用では systemctl stop mysqld と結果は同等ですが、リモートホストのMySQLを停止したい場合は次のように使えます。

mysqladmin -h 192.168.1.10 -u root -p shutdown

実務Tips|mysqladminを安全に使うポイント

1. パスワードをコマンドラインに直書きしない

-p パスワード のようにパスワードを引数に直書きすると、ps aux の出力や history コマンドでパスワードが見えてしまいます。

# NG例: パスワードが history に残る mysqladmin -u root -pMyPassword123 ping # 推奨: -p だけ書くと対話入力になる mysqladmin -u root -p ping

2. --defaults-extra-fileでパスワードを安全に渡す

スクリプトからパスワード入力なしで mysqladmin を実行したい場合は、専用の認証ファイルを --defaults-extra-file で指定します。

# 認証ファイルを作成(所有者のみ読み取り可) cat > /root/.my-mysqladmin.cnf << 'CNFEOF' [client] user=root password=yourpassword CNFEOF chmod 600 /root/.my-mysqladmin.cnf # ファイル指定でパスワード入力なしに実行 mysqladmin --defaults-extra-file=/root/.my-mysqladmin.cnf ping

このファイルは必ず chmod 600 で所有者のみ読み書き可能にしておきましょう。認証情報をファイルで管理するこのパターンは、cronジョブからのMySQL操作全般で活用できます。MySQLをはじめとするLinuxサーバー管理の実務を体系的に習得したい方は、Linux Master Pro Seminar のハンズオン講座でも詳しく取り上げています。

「Can't connect」「Access denied」が出た時の対処法

1. 「Can't connect to local MySQL server through socket」が出た場合

ソケットファイルが見つからないというエラーです。まずMySQLが起動しているかを確認します。

# Rocky Linux / RHEL系 systemctl status mysqld # Ubuntu系 systemctl status mysql

Active: inactive (dead) になっている場合はMySQLが停止しています。systemctl start mysqld で起動してから再試行します。ソケットパスがデフォルト(/var/lib/mysql/mysql.sock)と異なる場合は -S /path/to/mysql.sock オプションで明示指定します。

2. 「Access denied for user 'root'@'localhost'」が出た場合

パスワードが間違っているか、指定ユーザーに SHUTDOWN 等の権限がない場合に発生します。root ユーザーに権限を付与するには MySQL CLI から次のSQLを実行します。

-- MySQL CLIから実行 GRANT SHUTDOWN ON *.* TO 'root'@'localhost'; FLUSH PRIVILEGES;

本記事のまとめ|mysqladminコマンド早見表

やりたいこと コマンド
サーバー生存確認 mysqladmin -u root -p ping
稼働時間・スレッド数を確認する mysqladmin -u root -p status
詳細な内部統計を確認する mysqladmin -u root -p extended-status
接続中プロセスを一覧表示する mysqladmin -u root -p processlist
特定プロセスを強制終了する mysqladmin -u root -p kill プロセスID
バイナリログをローテートする mysqladmin -u root -p flush-logs
全テーブルのキャッシュをフラッシュする mysqladmin -u root -p flush-tables
権限テーブルを再読み込みする mysqladmin -u root -p flush-privileges
MySQLサーバーを安全に停止する mysqladmin -u root -p shutdown
認証ファイルを使って実行する mysqladmin --defaults-extra-file=/root/.my-mysqladmin.cnf ping
mysqladmin はMySQL管理の入口となるシンプルなツールです。サーバーの状態確認からフラッシュ操作・シャットダウンまで、日常的なDB運用タスクを迅速にこなすためにぜひ覚えておきましょう。

現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、

MySQL・MariaDBなどのデータベース管理を含む2日間ハンズオンセミナーをご用意しています。
>> Linux Master Pro Seminar の詳細はこちら

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

運営

リナックスマスター.JP(代表 宮崎智広)

株式会社イーネットマーキュリーが運営するLinux教育サイトです。代表の宮崎智広は現役のLinuxサーバー管理者として20年以上の実務経験を持ち、累計3,100名以上のエンジニアを指導してきました。実践型のLinuxセミナーや無料マニュアルの配布を通じてLinux人材の育成に取り組んでいます。