Visual BasicでMySQLサーバーへ、クライアントPCから接続するときのポイントです。
頭で考えたみたいに簡単ではありませんでした。
どなたかの役にたちますように、備忘録を書き留めておきます。
よろしければ参考にしてください。
まずは結論です、ポイントは以下の3点です。
- Visual Basic 接続文字列のIPアドレス
- MySQLユーザー権限の設定
- ポートの開放
※「Visual Studio 2022」と「MariaDB」です。
Visual Basic 接続文字列のIPアドレス
このような間違いは僕だけかも知れませんが、Visual Basicでの接続文字列は「127.0.0.1」でなく、サーバー機のIPアドレス「192.168.11.5」を指定します。
XAMPPでMySQL(MariaDB)をインストールすると管理ツール(phpMyAdmin)が使えます。そこにデータベースサーバーのIPアドレスとして「127.0.0.1」と表示されています。
ですが、そのアドレス「127.0.0.1」ではクライアントからは接続できませんでした、サーバー機のIPアドレス(例えば、「192.168.11.5」)で接続できました。
IPアドレスがわからないときは、コマンドプロンプトから「ipconfig」で調べることができます。
MySQLユーザー権限の設定
MySQLデータベースは、ユーザー設定で接続元を制限しています。
最初から登録されているユーザー「root」の初期値は、「LocalHost」しかアクセスできない設定です。
クライアントからMySQLデータベースにアクセするには、「root」の権限を変更するか、権限を持つユーザーを作る必要があります。
ここでは「root」の権限を変更する方法を解説します。
phpMyAdminがインストールされている場合
phpMyAdminでは「ユーザーアカウント」>使用するユーザー>「ログイン情報」>「ホスト名」を確認します。
この項目がアクセスを許可する範囲になるので、「すべてのホスト」に変更してください。
コマンドプロンプトで変更する場合
コマンドプロンプトからは以下の手順になります。
Mysqlにログインする。
mysql -h ホスト名 -u ユーザー名 -p パスワード
ユーザー一覧と権限を表示する。
select user, host from mysql.user;
Host欄がアクセスできる権限です。
「%」は全てのクライアントから接続可、「localhost」は他のクライアントから接続不可です。
ユーザー「root」は「localhost」になっているので「%」に変更します。
grant all privileges on . to root@”%”;
確認します。
select user, host from mysql.user;
できました。
ポートの開放
3306ポートを開放します。
Windowsのファイアウォールを解除するという手段もありますが、セキュリティーを弱くする事になります。
難しくないのでポートを開放しましょう。
「コントロールパネル」>「WindowsDefenderファイアウォール」>「詳細設定」
「受信の規制」>「新しい規制」
「ポート」>「次へ」
「特定のポート」に「3306」と入力して「次へ」
「接続を許可する」のまま「次へ」
「次へ」
任意の「名前」を入力して「完了」します。
まとめ
以上がVisual Basicでクライアントから、MySQLにアクセスするポイントです。
MySQLデータベース接続でお悩みであれば、一度試してください。