背景
Google Alert から mysql キーワードで引っかかった下記 Web ページをチェックしていたところ、MySQL Workbench なる存在を初めて知ったので、試しに使ってみることにした。
試用前の期待値
MySQL Workbench の DL ページを見る限り、DB を可視化するツールのようだ。
https://www.mysql.com/jp/products/workbench/
筆者は普段、DB のテーブルや構造のチェックのために Sequel Pro を使用しているが、それを代替できる可能性があるか、確認したいと思う。
特に、Sequel Pro の不満ポイントである
- 接続が切れると、ソフトフェアそのものが落ちる
- クエリが実際の DB に反映されない
- Sequel Pro でチェックした構造と、コマンドラインでチェックした構造にギャップがある
ここら辺をカバーしてくれていたら最&高。
また、久々に新しいソフトに触るので、単純にワクワクしているw
実際に使ってみた
MySQL Workbench を起動したところ、
Unsupported Operating System
不吉なメッセージがw
macOS 対応版をダウンロードしたはずだが、不安定な要素を含んでいるのだろうか・・・。
気を取り直して、使ってみる。
DB の設定を修正したが、ポップアップが出て
Cannot Connect to Database Server
と言われてしまった・・・。
コマンドラインで MySQL にログインできるから、大丈夫なはずだが・・・。
MySQL の使い方を思い出しながら、思考錯誤してみる。
まずは、アクセス権を調べてみる。
mysql> USE mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SELECT Host, User FROM user;
+-------------------+-------------+
| Host | User |
+-------------------+-------------+
| 127.0.0.1 | agent1 |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | |
| localhost | glaciermelt |
| localhost | root |
| macbook-pro.local | |
| macbook-pro.local | root |
+-------------------+-------------+
8 rows in set (0.01 sec)
うん、大丈夫だよな。
MySQL Workbench の Manage Server Connections で Test Connection してみると、
Failed to Connect to MySQL at 127.0.0.1:13306 with user agent1
Table 'performance_schema.session_status' doesn't exist
どうやら、 performance_schema データベースに、 session_status テーブルがないのが原因のようだ。
Sequel Pro で確認すると、確かに session_status テーブルはない。
これって作れるのかな?
下記の記事を参考に、対処してみよう。
mysql_upgrade
コマンドが鍵っぽい。
$ mysql_upgrade -uagent1 -p -h127.0.0.1 -P13306
Enter password:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
Checking system database.
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.server_cost OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Upgrading the sys schema.
Checking databases.
agent_one_udb.udb_admin OK
agent_one_udb.udb_admin_password OK
agent_one_udb.udb_admin_session OK
agent_one_udb.udb_user OK
agent_one_udb.udb_user_password OK
agent_one_udb.udb_user_session OK
keikoba_app_development.active_storage_attachments OK
keikoba_app_development.active_storage_blobs OK
keikoba_app_development.ar_internal_metadata OK
keikoba_app_development.bookmarks OK
keikoba_app_development.favorites OK
keikoba_app_development.posts OK
keikoba_app_development.schema_migrations OK
keikoba_app_development.users OK
keikoba_app_test.active_storage_attachments OK
keikoba_app_test.active_storage_blobs OK
keikoba_app_test.ar_internal_metadata OK
keikoba_app_test.bookmarks OK
keikoba_app_test.favorites OK
keikoba_app_test.posts OK
keikoba_app_test.schema_migrations OK
keikoba_app_test.users OK
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
お。このコマンドを実行したら、確かに performance_schema データベースに、session_vaiables テーブルが生成されてる。
これで、MySQL Workbench で接続できるかな?
先ほどと同様に Test Connection してみると、
Failed to Connect to MySQL at 127.0.0.1:13306 with user agent1
Native table 'performance_schema'.'session_status' has the wrong structure
接続できず。
今度は、 session_status の構造が適切でないようだ。
下記記事によると、再起動すると良さげな可能性がありそうだ。
service コマンドは使えないっぽいので、色々試してみる。
(4ヶ月前にかなりいじったはずだが、かなり忘れてる。)
下記の記事を参考に、 mysql コマンドが使えそうなことが分かった。
色々試してみる。
// MySQL サーバーの状態を確認する
$ mysql.server status
SUCCESS! MySQL running (1359)
// サーバーは動いているようだ
// mysql のバージョンを確認してみる
$ mysql --version
mysql Ver 14.14 Distrib 5.7.35, for osx10.15 (x86_64) using EditLine wrapper
// 動かしているバージョンと違うな。何でだっけ・・・。
// 一先ず、サーバーを停止してみる
$ mysql.server stop
Shutting down MySQL
.... SUCCESS!
// お、うまく停止できた
// ちゃんと停止しているか、確認する
$ mysql.server status
SUCCESS! MySQL running (28697)
// あれ、動いている何でだろう・・・。
// homebrew で動いているのかな?こちらも停止してみる
$ brew services stop mysql
// 停止したかな?
$ mysql.server status
SUCCESS! MySQL running (28697)
// 停止してない。何故だ・・・。
// あ。もしかして、バージョン指定が必要? @5.7 で停止してみる
$ brew services stop mysql@5.7
Stopping `mysql@5.7`... (might take a while)
==> Successfully stopped `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)
// お。停止したっぽい
// 念の為、ダメおしで停止したか確認する
$ mysql.server status
ERROR! MySQL is not running
// うん。停止してるね
// homebrew でどのバージョンをインストールしたか、念の為確認する
$ brew search mysql
==> Formulae
automysqlbackup mysql++ mysql-client@5.7 mysql-sandbox mysql@5.6 ✔ mysqltuner
mysql mysql-client mysql-connector-c++ mysql-search-replace mysql@5.7 ✔ qt-mysql
==> Casks
mysql-connector-python mysql-utilities navicat-for-mysql
mysql-shell mysqlworkbench sqlpro-for-mysql
// @5.6 と @5.7 を入れていたか
// メインで使ってるのは @5.7 だし、 @5.6 はアンインストールしとこう
$ brew uninstall mysql@5.6
Uninstalling /usr/local/Cellar/mysql@5.6/5.6.51... (344 files, 156.2MB)
// アンインストールした
// 念の為、インストール状況を確認する
$ brew search mysql
==> Formulae
automysqlbackup mysql++ mysql-client@5.7 mysql-sandbox mysql@5.6 mysqltuner
mysql mysql-client mysql-connector-c++ mysql-search-replace mysql@5.7 ✔ qt-mysql
==> Casks
mysql-connector-python mysql-utilities navicat-for-mysql
mysql-shell mysqlworkbench sqlpro-for-mysql
// よしよし、 @5.6 はアンインストールできてる
// よし。だいぶ遠回りしたが、 mysql@5.7 を homebrew で起動する
$ brew services start mysql@5.7
==> Successfully started `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)
// よし、起動できた
// 念の為、起動できたか確認する
$ mysql.server status
SUCCESS! MySQL running (50258)
さて、もう一度 Test Connection してみる。
Successfully made the MySQL connection
Information related to this connection:
Host: 127.0.0.1
Port: 13306
User: agent1
SSL: enabled with ECDHE-RSA-AES128-GCM-SHA256
A successful MySQL connection was made with
the parameters defined for this connection.
よっしゃ! 接続できた!
やっぱり、MySQL は詰まりポイントが凝縮してるな・・・。
後輩ができたら、ここら辺をちゃんと教えよう。
使用感について
さて、やっと DB の中身を覗けるようになった訳だが、使い勝手はどうだろうか。
結論、かなり使えそうです。
DB の中身・構造情報はもちろん、 DDL も見れる。
地味に嬉しいのが、サーバーの状態も全て可視化してくれるところ。
Host, Socket, Version などの情報も一覧化してくれるので、これはかなりありがたい。
また、Users and Privileges で User Account 情報、Priviledges 情報も一覧化してくれる。
これは神。いやーすごい。
まあ、コマンドを打てば手に入る情報ではありますが、それが不要なので個人的にはかなりナイスなソフトウェアですね。
Sequel Pro の方が手軽ではありますが、MySQL Workbench に完全移行してもいいレベルかもです。