近年、Docker コンテナ技術はさまざまなアプリケーション シナリオでますます広く使用されており、軽量かつ迅速な導入と管理方法を提供し、アプリケーションの開発と運用と保守を効率化します。 Docker コンテナ テクノロジを使用すると、コンテナ内での MySQL 認証の失敗など、いくつかの問題が発生する可能性があります。この記事では、この問題を解決する方法について説明します。
Docker コンテナでの MySQL 認証の失敗により、アクセス拒否などの問題が発生する可能性があります。この状況は通常、コンテナ内でユーザー認証が正しく設定されていないことが原因で発生します。 Docker コンテナでは、MySQL ユーザー認証には、パスワード ベースの認証と認証プラグイン ベースの認証という 2 つの主な方法があります。
パスワードベースの認可
パスワードベースの認可では、MySQL ユーザーはコンテナ内でアカウントのパスワードを作成し、外部からコンテナにアクセスするときにこれらの資格情報を認可に使用する必要があります。次の手順に従って MySQL アカウントを作成できます。
まず、コンテナに MySQL サーバーを入力する必要があります。これは、次のコマンドで実行できます。 実装:
docker exec -it mysql-container mysql -u root -p
このコマンドは、対話型ターミナルを起動し、コンテナ内の MySQL サーバーに接続します。
MySQL ターミナルで、次のコマンドを使用して新しいユーザーを作成できます:
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
Where, 'newuser ' は新しいユーザーのユーザー名、'%' はユーザーが任意の IP アドレスからアクセスできることを意味し、'password' は新しいユーザーのパスワードです。
同様に、MySQL ターミナルで次のコマンドを使用して新しいユーザーを承認できます:
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';
このコマンドは次のことを許可します。新規ユーザー すべてのデータベースとテーブルにアクセスします。
最後に、変更を有効にするには、権限を更新する必要があります:
FLUSH PRIVILEGES;
さて、新しいユーザーです。が正常に作成され、認証されると、ユーザー名とパスワードを使用して MySQL コンテナに外部からアクセスできるようになります。
認証プラグインベースの認可
認証プラグインベースの認可では、MySQL サーバーは、SSL 証明書や Kerberos などの外部認証プラグインをユーザー認証に使用します。 .、より安全にユーザーを認証します。 Docker コンテナでは、次の手順を使用して認証プラグインを設定できます。
認証プラグインを使用するには、 Docker コンテナ内の MySQL サーバーにプラグインをインストールする必要があります。これは、次の手順に従って実行できます。
docker cp auth_plugin.so mysql-container:/usr/lib/mysql/plugin/
このコマンドは、プラグイン ファイル auth_plugin.so をコンテナ内の /usr/lib/mysql/plugin/ ディレクトリにコピーします。
次に、MySQL 構成ファイルでプラグインを有効にする必要があります。構成ファイルは、次のコマンドを使用して変更できます。
docker exec -it mysql-container bash vi /etc/mysql/my.cnf
認証プラグインを有効にするセクションで、次の行を追加する必要があります。
[mysqld] plugin-load = auth_plugin.so
MySQL ターミナルでは、プラグインに基づいてユーザーを作成する必要があります。これは次のコマンドで実行できます:
CREATE USER 'newuser'@'%' IDENTIFIED WITH auth_plugin AS 'cred';
ここで、「newuser」は新しいユーザーのユーザー名、「%」はユーザーが任意の IP アドレスからアクセスできることを意味します。アクセスの場合、「cred」は、プラグインの使用時にユーザーを認証するために使用される認証情報が暗号化された文字列です。
同様に、MySQL ターミナルで、次のコマンドを使用して新しいユーザーを承認する必要があります:
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';
このコマンドこれにより、新しいユーザーにすべてのデータベースとテーブルへのユーザー アクセスが許可されます。
最後に、権限を更新する必要があります:
FLUSH PRIVILEGES;
これで、プラグインベースのユーザーが正常に作成され、承認されました。その資格情報は、外部から MySQL コンテナにアクセスするために使用されます。
概要
Docker コンテナでは、MySQL の認証失敗により、アクセス拒否などの問題が発生する可能性があります。この記事では、パスワードベースの認可と認証プラグインベースの認可という 2 つの MySQL ユーザー認可方法を紹介します。どちらの方法を使用する場合でも、外部からコンテナ内の MySQL サーバーにアクセスするには、ユーザー権限を正しく設定する必要があります。
以上がDockerコンテナのmysql認証が失敗した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。