SE(たぶん)の雑感記

一応SEやっている筆者の思ったことを書き連ねます。会計学もやってたので、両方を生かした記事を書きたいと考えています。 でもテーマが定まってない感がすごい。

Visual Studio CodeでMySQLを扱う

少し前になりますが、MySQL 8.0が公開されました。

nippondanji.blogspot.com

MySQL :: MySQL 8.0 Release Notes

新しい構文等が用意されているそうです。

CTEが増えたのは、個人的にはとても嬉しいです。アプリから使う機会があるか、と言われたら困るところですが…CTEを生成する部分を共通化するとか、そういう手段で何とかなったらいいですね。

それとは別に。
Visual Studio CodeMySQL扱えないかなーと探していたところ、拡張機能がありました。

今回はその紹介です。

前提条件

MySQLのインストールは行われている、という前提にします。
もしくは、自分のPCから接続できるMySQLサーバーがある、という状況を想定します。

コマンドラインや、MySQL Workbench等で、MySQLが開けるなら問題ありません。

バージョン等

ツール バージョン
OS(Windows) Windows10 Pro 1803 64bit
Visual Studio Code 1.24.1
MySQL 8.0.11
MySQL(Visual Studio Code拡張機能) 0.3.0

拡張機能のインストール

f:id:hiroronn:20180627200743p:plain

上の画像で選択されている拡張機能をインストールします。

MySQLへ接続

拡張機能をインストールし、有効化すると、

f:id:hiroronn:20180627201735p:plain

のように、エクスプローラーの部分に「MySQL」という領域が追加されます。

この右にある「+」をクリックすると、画面上部のコマンドパレットに、接続情報を以下の順番で入力するよう要求されます。

ローカルの場合、ホスト名はlocalhostでよいです。その他はそれぞれ必要なものを入力します。

エラーが出る(8.0.11の場合)

上記の通り入力すると、コネクションが追加されるのですが、以下の通りエラーが出ます。

f:id:hiroronn:20180627210824p:plain

Error:ER_NOT_SUPPORTER_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

と表示されています。表示上切れますが。

当件、GitHubにてissueで上がっており、そこに回避策も書いてあります。

github.com

思いっきり引用しますが、

ALTER USER 'username'@'host' IDENTIFIED WITH 'mysql_native_password' BY 'password';
you can check it:
USE mysql;
SELECT plugin FROM user WHERE User = 'username';
by the way, you may need root permissions

とのことです。意訳すると、

まずroot権限でログイン。

以下のクエリを実行。

ALTER USER 'username'@'host' IDENTIFIED WITH 'mysql_native_password' BY 'password';

終わったら、

USE mysql;
SELECT plugin FROM user WHERE User = 'username';

でチェックしてね!

とのことです。

結果は、

f:id:hiroronn:20180627212046p:plain

のようになります。

この状態になったら、Visual Studio Code側でDBをリフレッシュすると、

f:id:hiroronn:20180627212340p:plain

のように、データベースが見える状態になります*1

クエリ発行とか

エクスプローラーに表示されているテーブル上で右クリックすると、Select Top 1000と表示され、上位1000行が選択できます。

mysql.dbをSELECTすると、

f:id:hiroronn:20180627213218p:plain

のように、グリッド形式できちんと表示されます*2

また、任意のクエリを実行できます。

事前に、コマンドパレットから言語モードをSQLにし、エディタで右クリックすると、Run MySQL Queryと表示されます。

f:id:hiroronn:20180627213911p:plain

Ctrl + Alt + Eでもよいです。これを選択すると、そのエディタのクエリが実行できます。
つまり、実質なんでもできます。

権限等は適切にチェックされます。SELECT権限しか持たないユーザーでINSERTを実行すると、

f:id:hiroronn:20180627214348p:plain

のように、ちゃんと拒否されます。

おわりに

以前の記事で、SQL ServerVSCodeから触る、というのも投稿しました。

MySQLも、Visual Studio Codeからアクセスできます。あちらと違って、出力系は弱いですが。

MySQLは無料ですし、使いやすいので、エディタから気軽にアクセスできると、何かと便利だと思います。
ぜひ使ってみて、もっと快適な開発ライフを送ってください。

余談

MySQL 8.0から、権限周りも変更があったようです。

yoku0825.blogspot.com

GRANT ALLで全権限与える、みたいなことができるという記事を見かけ、試しましたが、8.0.11ではできませんでした。

また、権限付与とユーザー作成を同時に行うこともできませんでした。

ユーザー作成後、GRANTで必要な権限を明示的に与える必要があるようでした。

これに関しては、詳細な記事の希望があれば、調べて書きます。

ではでは。

*1:接続ユーザーに全スキーマへのSELECT権限を与えている状態だと、このように全部見える

*2:クエリ文タブと、Resultsというタブが開かれるので、それを左右ペインに分けた状態。分けるのは手作業