MySQLのprocesslistをコンソールに常時表示する
- SQLAlchemy使ったテストをしている時にMySQLのセッション情報を確認をする事があり、その時に毎回コンソールから入ってコマンドを打つのが面倒だったので確認するシェルスクリプトを作ったのでメモ
事前準備
MySQLへ接続するための設定をファイルに書き出す
- login-pathにはシェルスクリプトで接続先の名称として利用する名前を付ける
今回はprocesslist
- MySQLに接続するためのユーザーはshowuser
- 設定ファイルにパスワードも書き出す(パスワードは暗号化されます)
$ mysql_config_editor set --login-path=processlist --user=showuser --password
Enter password: ← パスワードを設定する
設定の確認
- 設定が完了するとホームディレクトリに.mylogin.cnfというファイルができる
- ファイルの中身は暗号化されているので見ることは出来ないがコマンドで中身を確認することができる
$ mysql_config_editor print --all
admin@ubuntu:~$ mysql_config_editor print --all
[processlist]
user = "showprocess"
password = *****
while true
do
clear
/usr/bin/mysql --login-path=processlist -Dperformance_schema -e "select * from INFORMATION_SCHEMA.PROCESSLIST;"
/usr/bin/mysql -u showprocess -pPASSWORD -Dperformance_schema -e "select * from INFORMATION_SCHEMA.PROCESSLIST;"
sleep 1
done
$ chmod 700 showprocess.sh
$ ./showprocesslist.sh
+------+-----------------+-----------+--------------------+---------+------+------------------------+----------------------------------------------+
| ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |
+------+-----------------+-----------+--------------------+---------+------+------------------------+----------------------------------------------+
| 1361 | showprocess | localhost | performance_schema | Query | 0 | executing | select * from INFORMATION_SCHEMA.PROCESSLIST |
| 5 | event_scheduler | localhost | NULL | Daemon | 2698 | Waiting on empty queue | NULL |
+------+-----------------+-----------+--------------------+---------+------+------------------------+----------------------------------------------+