1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:VirtualBox上で動作するMySQLにホストOSから接続する方法を調べた話

Posted at

はじめに

開発環境としてVirtualBox上に構築したLinuxゲストにMySQLをインストールし、ホストOS(例:Mac)からMySQLへアクセスする場面がよくあります。

個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。

本記事では、その手順を段階的に確認しながら、接続の可否を検証するためのポイントを備忘録としてまとめています。


書こうと思ったきっかけ

LaravelやWordPressなどのローカル開発環境をVirtualBox上で構築する中で、ホストからMySQLへ接続したいというケースがありました。しかし、初期設定のままでは接続エラーが頻発。その原因と解決策を整理しておきたく、記録として残すことにしました。


確認手順

1. MySQLが動いているか確認(ゲストOS内)

ゲストOSにログインし、MySQLが起動中かどうかを確認します。

systemctl status mysql

または

mysql -u root -p

2. MySQLの設定確認(my.cnf)

設定ファイル /etc/mysql/my.cnf または /etc/my.cnf を編集します。

bind-address = 0.0.0.0

※この設定により、MySQLが全てのIPアドレスからの接続を受け付けます。

変更後はMySQLを再起動します。

sudo systemctl restart mysql

3. ユーザーと権限の確認(MySQL側)

MySQLにログイン後、リモートからの接続を許可するユーザーを作成します。

CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. ポートフォワーディングの設定(VirtualBox)

VirtualBoxのVM設定画面から:

  • 設定 → ネットワーク → アダプター1(NAT)→ 高度 → ポートフォワーディング

以下の内容でエントリを追加:

名前 プロトコル ホストIP ホストポート ゲストIP ゲストポート
mysql TCP 127.0.0.1 3306 10.0.2.15(※) 3306

※ ゲストIPは、ゲストOS内で ip a コマンドなどで確認してください。


5. ホストOS(Mac)から接続テスト

mysql -h 127.0.0.1 -P 3306 -u your_user -p

→ パスワードを入力し、接続できれば成功です!


まとめ

VirtualBox上のMySQLにホストから接続するには、MySQLの設定だけでなく、VirtualBoxのネットワーク設定やユーザー権限も適切に設定する必要があります。

問題が起きた際は、以下の順で確認していくのがおすすめです:

  1. MySQLが起動しているか?
  2. bind-address が正しく設定されているか?
  3. ユーザーにリモート接続権限があるか?
  4. VirtualBoxでポートフォワーディングされているか?

今後の開発環境構築時にも参考にできるよう、丁寧に検証して記録しておくことで、トラブル時の解決がスムーズになります!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?