デフォルトでは、展開後のMySQLには次の接続制限があります:
mysql> select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
4 rows in set (0.00 sec)
どうやら、セキュリティ上の理由から、Dockerイメージの外部で接続することはできません。rootが任意のホストから接続できるように変更する必要がある場合(たとえば、開発目的で)、次のようにします。
-
必要なすべてのポートマッピングを使用してmysqlイメージを開始します:
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
または、完全なポートマッピングが必要な場合:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
-
これが新規インストールの場合-デフォルトのパスワードを取得します:
docker logs mysql57 2>&1 | grep GENERATED
-
mysql
を使用して接続します dockerのmysqldに直接クライアント:docker exec -it mysql57 mysql -uroot -p
-
これが新規インストールの場合は、
ALTER USER
を使用してパスワードを変更するように求められます 指図。やってください。 -
SQLの実行:
update mysql.user set host = '%' where user='root';
-
mysql
を終了します クライアント。 -
コンテナを再起動します:
docker restart mysql57
これで、MySQLWorkbenchから
に接続できるようになります。host: `0.0.0.0`
port: `3306`
すべての変更後、クエリは次のように表示されます:
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+