[Vagrant]mysqlに接続時、Host 'gateway' is not allowedエラーが出るとき

カテゴリ: Linux, MySQL, Vagrant

VagrantでMySQLを起動させて3306のポートフォワーディングを行っているときに、ホストOSから接続するとHost 'gateway' is not allowedエラーが出ることがあります。

エラーの内容

# mysql -u root
ERROR 1130 (HY000): Host 'gateway' is not allowed to connect to this MySQL server

Vagrantfileの設定

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-7.3"
  config.vm.network "forwarded_port", guest: 3306, host: 3306
  ...

エラーの理由

MySQLのデフォルトではrootがローカルホストからのみの接続が許可されています。
一方で、Vagrantにてforwarded_portでポートフォワーディングしたとき、MySQLは外部サーバのホスト名が"gateway"というPCから接続されとみなされます。

MySQLは"gateway"というホスト名のリモートPCからの接続を許可していないため、'ERROR 1130'が発生しています。

解決方法

以下のコマンドを実行し、root@gatewayユーザへ対して接続許可を与えればよいです。

# vagrantで動作するゲストOSで実行
mysql -u root -e "create user 'root'@'gateway' identified by '';"
mysql -u root -e "grant all privileges on *.* to 'root'@'gateway' with grant option;"
mysql -u root -e "flush privileges;"

許可を与えた後、ホストOSから接続してエラーが出ないことを確認します。

$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.38 MySQL Community Server (GPL)
...

mysql>
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。