少し前になりますが、MySQL 8.0
が公開されました。
MySQL :: MySQL 8.0 Release Notes
新しい構文等が用意されているそうです。
CTE
が増えたのは、個人的にはとても嬉しいです。アプリから使う機会があるか、と言われたら困るところですが…CTE
を生成する部分を共通化するとか、そういう手段で何とかなったらいいですね。
それとは別に。
Visual Studio Code
でMySQL
扱えないかなーと探していたところ、拡張機能がありました。
今回はその紹介です。
前提条件
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 |
拡張機能のインストール
上の画像で選択されている拡張機能をインストールします。
MySQLへ接続
拡張機能をインストールし、有効化すると、
のように、エクスプローラーの部分に「MySQL」という領域が追加されます。
この右にある「+」をクリックすると、画面上部のコマンドパレットに、接続情報を以下の順番で入力するよう要求されます。
ローカルの場合、ホスト名はlocalhost
でよいです。その他はそれぞれ必要なものを入力します。
エラーが出る(8.0.11の場合)
上記の通り入力すると、コネクションが追加されるのですが、以下の通りエラーが出ます。
Error:ER_NOT_SUPPORTER_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
と表示されています。表示上切れますが。
当件、GitHub
にてissue
で上がっており、そこに回避策も書いてあります。
思いっきり引用しますが、
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';
でチェックしてね!
とのことです。
結果は、
のようになります。
この状態になったら、Visual Studio Code
側でDBをリフレッシュすると、
のように、データベースが見える状態になります*1。
クエリ発行とか
エクスプローラーに表示されているテーブル上で右クリックすると、Select Top 1000
と表示され、上位1000行が選択できます。
mysql.db
をSELECTすると、
のように、グリッド形式できちんと表示されます*2。
また、任意のクエリを実行できます。
事前に、コマンドパレットから言語モードをSQL
にし、エディタで右クリックすると、Run MySQL Query
と表示されます。
Ctrl + Alt + E
でもよいです。これを選択すると、そのエディタのクエリが実行できます。
つまり、実質なんでもできます。
権限等は適切にチェックされます。SELECT
権限しか持たないユーザーでINSERT
を実行すると、
のように、ちゃんと拒否されます。
おわりに
以前の記事で、SQL Server
をVSCodeから触る、というのも投稿しました。
MySQL
も、Visual Studio Code
からアクセスできます。あちらと違って、出力系は弱いですが。
MySQL
は無料ですし、使いやすいので、エディタから気軽にアクセスできると、何かと便利だと思います。
ぜひ使ってみて、もっと快適な開発ライフを送ってください。
余談
MySQL 8.0
から、権限周りも変更があったようです。
GRANT ALL
で全権限与える、みたいなことができるという記事を見かけ、試しましたが、8.0.11
ではできませんでした。
また、権限付与とユーザー作成を同時に行うこともできませんでした。
ユーザー作成後、GRANT
で必要な権限を明示的に与える必要があるようでした。
これに関しては、詳細な記事の希望があれば、調べて書きます。
ではでは。