sql >> データベース >  >> RDS >> Mysql

Docker内で実行中のmysqlにmysqlワークベンチを接続する方法は?

    デフォルトでは、展開後の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が任意のホストから接続できるように変更する必要がある場合(たとえば、開発目的で)、次のようにします。

    1. 必要なすべてのポートマッピングを使用して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
    
    1. これが新規インストールの場合-デフォルトのパスワードを取得します:

      docker logs mysql57 2>&1 | grep GENERATED

    2. mysqlを使用して接続します dockerのmysqldに直接クライアント:

      docker exec -it mysql57 mysql -uroot -p

    3. これが新規インストールの場合は、ALTER USERを使用してパスワードを変更するように求められます 指図。やってください。

    4. SQLの実行:

      update mysql.user set host = '%' where user='root';

    5. mysqlを終了します クライアント。

    6. コンテナを再起動します:

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


    1. 日付範囲から日を生成する

    2. Python:MySQLに接続してクエリを実行するためのベストプラクティスと最も安全な方法

    3. ユーザーアカウント管理、役割、権限、認証PHPおよびMySQL-パート4

    4. OracleSQLDeveloper-ドロップされたテーブルをリカバリする方法