きっかけ
社内でMySQLを使用したアプリを提出した際に、他のPCでexeファイルを起動すると、
MySQLに接続できないという旨のエラーが出たため。
やり方
環境:Windows11、MySQL8.0.34
1.Windowsの場合、MySQLのmy.iniで以下を設定する
ファイルパス:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
※bind-addressがない場合は、一番下に追加する。
2.Mysqlのサービスを再起動する
・windowsでサービスを起動し、MySQL80を再起動する。
3.リモート接続するMySQLのユーザーを作成する
MySQLにログインしてから以下のコマンドを実行する。
CREATE USER 'ユーザー名'@'%' IDENTIFIED WITH caching_sha2_password BY 'パスワード';
・ユーザー名、パスワードは任意の文字列を入力する。
・パスワードは大文字小文字の英字、数字、記号をすべて1つ以上使用したパスワードを入力する。
簡単なパスワードにすると後でエラーが出るため。
4.権限を付与する
GRANT ALL PRIVILEGES ON データベース名.* TO 'ユーザー名'@'%';
・データベース名は使用するデータベース名にする
・ユーザー名は3で登録したユーザー名にする。
5.MySQLサーバーに変更を反映させる
FLUSH PRIVILEGES;
6.登録したユーザーでログインできるか確認する
mysql -u ユーザー名 -p
ユーザー名は登録したユーザー名にする。
ログインできると以下のように表示される。
7.アプリ側でMySQLの接続情報を変更する
※VB.NETの場合
Dim builder = New MySqlConnectionStringBuilder()
builder.Server = "接続先のIPアドレス"
builder.Port = 3306
builder.UserID = "MySQLに登録したユーザー名"
builder.Password = "MySQLに登録したパスワード"
builder.Database = "グラントしたDB名"
Dim conStr = builder.ToString()
接続先PCのIPアドレスの確認方法は以下の通り。
コマンドプロンプトで以下のコマンドを実行する。
ipconfig
Wi-Fiに接続している場合、Wireless LAN adapter Wi-Fi: IPv4アドレス
がIPアドレスになる。
8.他のPCでMySQLサーバーに接続できるか確認する
同じLANに接続している他のPCでもexeファイルを動作させることができた。
参考サイト