初心者プログラマのひとり勉強部屋

若葉マークのプログラマー☺️

【docker】rails5+mySQL5.6 sequel proからmysqlに接続できない

こんにちは

 

今回は作成したdocker環境のDBにローカルからアクセスしようとして

Access denied for user 'root'@'localhost' (using password: YES)」というエラーの解消法を備忘録します

 

結論→ローカルのDBのポート番号を3306から4306に変更してアクセスできた

 

f:id:mocomo012:20200328185705p:plain

アクセス権限エラー

 

■経緯

dockerでrails開発環境を作成したものの、いつも使っているsequel pro(パンケーキ)からdockerコンテナ内のDBにアクセスできない!

 

■試したこと

※以下のコマンドからコマンドラインでアクセスできることは確認済み

$ mysql -u root -p -h localhost -P 3306 --protocol=tcp

デスクトップアプリからアクセスできないのが気持ち悪くて何度も試しました。。

 

・gemではmysql2がインストールされていたため、docker環境とホスト環境が違うことが原因かと何度もmysql2アンインストール→mysqlインストール(mysqlはインストールできなかった)

・mysql8.0でdocker環境作ってみた

→同じエラー

 

mysql-dataというボリュームをマウントしていたため、何回も試していて内容が残っている可能性があるという情報よりボリューム削除→再度down・buildし直し

$ sudo rm -rf mysql-data

→同じエラー

 

■解決方法

https://tackeyy.com/blog/posts/docker-with-sequel-pro

こちらのサイトさまの通りにローカルのポート番号を変更しました。

3306→4306

上記略
db:
 image: mysql:5.6
 environment:
 MYSQL_ROOT_PASSWORD: password
 MYSQL_DATABASE: root
 ports:
  - '4306:3306' ←ローカル側を変更
 volumes:
  - mysql_data:/var/lib/mysql
下記略

 

→解決🙏

 

※余談ですが、docker環境のmysql8はsequel proから接続できませんでした。(ログインはできるんですけど)何か別のアプリケーションがあるのでしょうか。

↓作成はされています

$ mysql -u root -p -h 127.0.0.1 --port 3307

Server version: 8.0.19

mysql> SELECT Host, User FROM mysql.user;

+-----------+------------------+

| Host      | User             |

+-----------+------------------+

| %         | root             |

| localhost | mysql.infoschema |

| localhost | mysql.session    |

| localhost | mysql.sys        |

| localhost | root             |

+-----------+------------------+

5 rows in set (0.04 sec)