Bash on Windows に構築したMySQL データベースに C# から接続してみた

前回のエントリでは、Bash on WindowsMySQLをインストールし動作するか試してみた訳ですが、今回のエントリでは Windows 側から C# プログラムで MySQL に接続し動作するか試してみます。

Bash on Windows で MySQL を動かしてみる

MariaDB&MySQL全機能バイブル

MariaDB&MySQL全機能バイブル

シェルスクリプトマガジン vol.39

シェルスクリプトマガジン vol.39

  • 作者: 當仲寛哲,斉藤博文,田代勝也,大岩元,新美勇一,高橋光輝,白羽玲子,後藤大地,法林浩之,すずきひろのぶ,熊野憲辰,御影けい,松浦智之,水間丈博,桑原滝弥,濱口誠一,USP研究所,ジーズバンク
  • 出版社/メーカー: USP研究所
  • 発売日: 2016/06/25
  • メディア: 雑誌
  • この商品を含むブログ (1件) を見る


コマンドプロンプトから Bash on Windows に接続し MySQL を起動

Bash on Windows & MySQL の情報って思ったより少ないですね。わたしの頭では Bash on Windows にインストールした MySQLWindows 側から接続できないと思ってましたが、完全誤解してました。NaviCat の評価版インストールして Localhost に接続したら、しっかりテーブルにアクセスできるじゃありませんかw


またコマンドプロンプト起動して bash と打ち込めば、コマンドプロンプトから bash を操作できることも判ってきました。これは楽しいw


というわけで、これ以降の操作はコマンドプロンプトで行います。


新規ユーザー追加

C# から MySQL に ROOT で接続するのって、仮に Localhost であってもあまり気分がいいものではありません。よって、新規ユーザーを追加します。
コマンドプロンプトを起動し、bashBash on Windows に移動します。

> bash


bash が起動したら MySQL のサービスを起動します。どうやら bash を閉じると、WSL(Windows Subsystem for Linux) で動いている Ubuntu もアンロードされる仕様のようで、bash 起動するたびにサービスを開始する必要があるみたいです。

$ sudo service mysql start


MySQL に接続します。

$ mysql -u root -p
Enter password: [パスワードを入力]


MySQL に接続したら、新たにユーザーを追加します。新規ユーザー名はとりあえず「hilapon」、ホストは「localhost」にして登録します。

mysql> create user 'hilapon'@'localhost' identified by '[任意のパスワード]';


成功したら、MySQL に登録されているユーザーの確認をしてみましょう。先ほど登録したユーザーが確認できます。

mysql> select User,Host from mysql.user;



ユーザー「hilapon」に前回作った sample_db を操作する権限を与えてみましょう。今回はとりあえず SELECT 権限だけ与えてみます。

mysql> grant select on sample_db.* to 'hilapon'@'localhost';

いったんMySQLサーバーの接続を解除し、新規ユーザーで接続できるか確認します。

mysql> exit;
$ mysql -u hilapon -p
Enter password: [パスワードを入力]
mysql> use sample_db;
mysql> select * from Shops where rating = 4;


接続が確認できました。次は C# で sample_db に接続したいと思います。


C# から Bash on Windows 上の MySQL に接続する

ここまでできたら、最後に C# のコンソールアプリから、Bash on Windows 上の MySQL に接続します。ここで注意することは、サーバーを localhost に指定することと、bash を閉じないこと、あと Nuget で MySQL.Data をソリューションにインストールすることです。bash を閉じるとMySQL に接続できません。気を付けてください。
以下、ソースです。


実行するとこうなる・・・


これで、Bash on Windows 上の MySQL を使って Visual Studio でアプリケーションが開発可能なことが確認できました。まだまだ奥が深い「Bash on Windows」、さらに新しいネタを発見したら、またブログで報告させて頂きたいと思います。