0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DockerでMySQLコンテナ起動してDBクライアントで接続しようとしたら大変だった話

Posted at

前提

下記の環境で作業していました。

OS:Windows 10
DBクライアント:DBeaver

DockerでMySQLコンテナを立ててテスト環境を作ろうとした

今回単にDockerで軽くMySQLコンテナを立てようとしたらエラーに次ぐエラーで大変だったので備忘録。

今回利用したdocker-compose.ymlは次でよくある平凡な定義でした。

services:
  db:
    image: mysql:8
    command: --collation-server=utf8mb4_0900_bin
      --transaction-isolation=READ-COMMITTED
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      TZ: Asia/Tokyo
    ports:
      - 13306:3306

1個目のエラー

Host xxx is not allowed to connect to this MySQL server

よくある接続しようとしているユーザーの権限にリモートで接続する権限がないんだなと思いました。
下記GRANTコマンドで権限付与を試してみることに。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

2個目のエラー

すると、次のようなエラーが・・・

you are not allowed to create a user with grant

権限的にGRANTが実行できない。
なんで?と思ったけど、docker-compose.ymlに次のように追記すれば、最初からリモートから接続できるみたいで、こちらを試してみることに。

environment:
  MYSQL_ROOT_HOST: '%'

3個目のエラー

よし、これでリモートから接続できるようになったはず。
もう1度DBクライアントから接続してみようとしたところ、またまたエラー・・・

Public Key Retrieval is not allowed

これは見たことない。
ググってみると、有志の方が記事に残してくれていた!

「allowPublicKeyRetrieval」をtrue、「useSSL」をfalseにするみたい。

これを実行すると、無事接続できました!!

さいごに

単純にMySQLコンテナ立てて外部から接続しようとしただけなのに、こんなに複雑なことになるっけ?と思いつつ単純な作業だけに同じような事象に見舞われる方もいると思うので備忘録として残します。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?