TODOS・何でも情報交換で phpMyAdmin での MySQL のログの確認みたいな話が出ていて,その件についてちょっと調べたので,覚え書として書いておく。
phpMyAdmin 4.0 (多分) 以降を使っている場合,状態モニタというグラフのページがある。ログインして,テータベースを選択せずにメニューから, 状態 > モニタ と進むと,グラフが見える。サーバがまともに動いている場合,グラフだけで十分ではないかと思うんだが,必要ならここから slow_query_log や general_log を参照できる。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’ に編集。
保存。
一応,ログアウト。
これで, 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’;
————
カテゴリー