0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQL Workbench を使ってみた

Posted at

背景

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 に完全移行してもいいレベルかもです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?