カテゴリー
Windows

phpMyAdmin で MySQL サーバの状態を見る。

The same article in English

図1 状態モニタ
図1 状態モニタ
 TODOS・何でも情報交換で phpMyAdmin での MySQL のログの確認みたいな話が出ていて,その件についてちょっと調べたので,覚え書として書いておく。
 
 phpMyAdmin 4.0 (多分) 以降を使っている場合,状態モニタというグラフのページがある。ログインして,テータベースを選択せずにメニューから, 状態 > モニタ と進むと,グラフが見える。サーバがまともに動いている場合,グラフだけで十分ではないかと思うんだが,必要ならここから slow_query_log や general_log を参照できる。
図2 無効
図2 無効
graphページで,「使用方法/セットアップ」をクリックしたときに,以下のメッセージ(図2も参照)が出るようなら, xxx_log の値を ‘ON’ に log_output の値を ‘TABLE’ に変更しなければいけない。
   slow_query_log および general_log は無効です。
   log_output はテーブルに設定されていません。
 
 もし,特権ユーザなら自分で値を変えられるが,普通は管理者に頼むことになる。まあ, root 権限でログインしないと,この辺は変えられないはずで,あんまり誰でも変えられるようだと,そのサーバは大問題だろう(爆)。
 正常動作しているサーバなら, general_log は必要ないかな?サイズが馬鹿でかくなって,他を圧迫する恐れがあるし。もしとるなら,サイズで切り出して,どこかに保管するような管理をする必要があるだろう。変数の値を変更するなら,何はともあれ, root 権限でログイン。
 
  コマンドラインからやる場合:
   SET GLOBAL slow_query_log = ON;
   SET GLOBAL log_output= TABLE;

 
  phpMyAdmin からやる場合:
   1.データベースは選択せずにメニューの変数をクリック。
    フィルタの「含まれている文字」フォームに “slow query log” その後,値を ‘ON’ に編集。
    保存
   2.フィルタの「含まれている文字」フォームに “log output” その後,値を ‘TABLE’ に編集。
    保存。
 
 一応,ログアウト。
図3 有効
図3 有効

 これで, root 権限でログインしたとき,状態モニタで, “slow_query_log” が参照できるようになった。
 
 これだけだと, mysqld を再起動すると,元の設定に戻ってしまう。設定を維持させるためには, my.ini/my.cnf の [mysqld] に以下の2行を付け加える。
   slow_query_log = ON
   log_output = TABLE
 
 前記のように, root 権限で状態モニタから “slow_query_log” が使えるようになったわけだが,ちょっと不便である。 WordPress の MySQL アカウントでログインしたときだって,使えないと意味ないでしょ。いつも root でログインなんて,非現実的だ。で,くりくりさんに TODOS・何でも情報交換で「こういう場合,一般ユーザにはどの程度権限を与えるべきでしょうか」とちょっと聞いてみた。「データベースだけでも参照はできますよ」というお返事だった。そんなわけで,以下のコマンドをやってみた。
 slow_log テーブルは mysql データベース上にあるので,
 
   GRANT SELECT (lock_time, start_time, rows_examined, db, rows_sent, query_time, sql_text, user_host) ON mysql.slow_log TO ‘WP-user’@’localhost’;
 
 これだと,非常に限定的な権限になるので,まぁ,許容可能かなと思う。
 
 現時点で,うちの WordPress の MySQL 用アカウントの権限は,下記のようになっている。
————
GRANT USAGE ON *.* TO ‘WP-user’@’localhost’ IDENTIFIED BY ‘passphrase’;
GRANT ALL PRIVILEGES ON WPdatabase.* TO ‘WP-user’@’localhost’;
GRANT SELECT (lock_time, start_time, rows_examined, db, rows_sent, query_time, sql_text, user_host) ON mysql.slow_log TO ‘WP-user’@’localhost’;
————

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です