環境条件MySQL 8.x は docker 経由でデプロイされており、起動時の docker-compose.yml は次のようになります。 バージョン: "3.2" サービス: マイスク: コンテナ名: mysql イメージ: "mysql:8.0" ポート: - 「3306:3306」 指示: [ "--文字セットサーバー=utf8mb4", "--collation-server=utf8mb4_unicode_ci", "--sql_mode=STRICT_TRANS_TABLES、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_ENGINE_SUBSTITUTION"、 ] ボリューム: - タイプ: バインド ソース: ./mysql ターゲット: /var/lib/mysql - タイプ: バインド ソース: ./mysql-docker.cnf ターゲット: /etc/mysql/conf.d/docker.cnf 環境: - MYSQL_RANDOM_ROOT_PASSWORD=はい -MYSQL_USER=私のユーザー -MYSQL_PASSWORD=パスワード -MYSQL_DATABASE=mydb 再起動: 常に docker-compose コマンドを初めて起動すると、mysql 8.x イメージが自動的にダウンロードされます。 起動が成功すると、ポート 3306 もマッピングされていることがわかります。 この時点で、mysql は正常にインストールされ、起動されます。 エラーが発生しました次に、Navicat などのデータベース クライアントを介して MySQL サーバーに接続すると、まったく接続できないことがわかりました。発生したエラーの種類は次のとおりです。
回避策データベースのユーザー権限を設定することでリモート アクセスの問題を解決する方法はインターネット上に多数ありますが、それらにはコア ステップしかなく、プロセスが欠けています。 1. mysql dockerにログインする上記の docker-compose.yml からわかるように、mysql ルート ユーザーのパスワードは設定されていません。 [mysqld] ホストキャッシュをスキップする 名前解決をスキップ MySQL にログインするときにパスワードが不要になるように、次の行を追加します。 [mysqld] ホストキャッシュをスキップする 名前解決をスキップ スキップ許可テーブル 追加後、コンテナを再起動します。 docker-compose ダウン docker-compose を起動 -d 2. ルートパスワードを設定するコンテナに入り、root アカウントで mysql サーバーにログインします。 docker exec -it mysql /bin/bash mysql -uroot # ここで Enter キーを押すと、パスワードを入力せずにサーバーにログインできます。mysql> flush privileges; クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> ALTER USER 'root'@'localhost' は 'mysqlroot' によって mysql_native_password で識別されます。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) 最初に権限をフラッシュする必要があることに注意してください。そうしないと、パスワードの変更は成功しません。 次に、コンテナを終了し、マップされた /etc/mysql/conf.d/docker.cnf ファイルを復元します。 [mysqld] ホストキャッシュをスキップする 名前解決をスキップ 新しく追加された行を削除し、コンテナを再起動します。 docker-compose ダウン docker-compose を起動 -d 3. ルートリモートアクセス権限を設定するコンテナを再起動した後、再度コンテナに入り、ルート ユーザーのリモート アクセス権限を設定します。 docker exec -it mysql /bin/bash mysql -uroot -p # 前の手順で設定したパスワードmysqlrootを入力する必要があります mysql> ALTER USER 'root'@'%' は 'mysqlroot' によって mysql_native_password で識別されます。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) 前の手順で 'root'@'localhost' の代わりに 'root'@'%' を使用してリモート アクセス権限を構成します。 設定後は、mysql docker コンテナを再起動せずに navicat で接続できるようになります。 4. 一般ユーザーmyuserのリモートアクセスを設定する上記の手順に従って、通常のユーザー myuser のリモート接続を構成します。 mysql> ALTER USER 'myuser'@'%' は 'mypass' によって mysql_native_password で識別されます。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> grant オプションを使用して、*.* のすべての権限を 'myuser'@'%' に付与します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) 設定が成功すると、myuser アカウントも navicat 経由でリモート接続できるようになります。 mysql8.x docker リモートアクセスの詳細設定に関するこの記事はこれで終わりです。より関連性の高い mysql8.x docker リモートアクセスのコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Win10の明るさ調整効果を模倣するHTML+CSS+JSサンプルコード
>>: 完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方
1. まずcenterosに付属のJDKをアンインストールします rpm-qa|grepopenjd...
方法 1: Google の詳細検索を使用します。たとえば、次に示すように.asp?id=9などの ...
みなさんこんにちは。私と同じように混乱している方はいらっしゃいませんか。CSS は簡単に始められます...
1. 縦型テーブルと横型テーブル垂直テーブル: テーブル内のフィールドとフィールド値はキーと値の形式...
最近、Docker を使用して Java アプリケーションをデプロイしていたときに、タイムゾーンが間...
Linux に PHP7 をインストールするにはどうすればいいですか? 1. 依存パッケージをインス...
環境の紹介: Ubuntu Server 16.04.2+MySQL 5.7.17 コミュニティ サ...
この記事の例では、モバイル紅包雨機能ページを実現するためのHTMLの具体的なコードを共有しています。...
img 要素を使用すると、HTML ドキュメントに画像を埋め込むことができます。画像を埋め込むには、...
目次序文ストアドプロシージャ: 1. ストアドプロシージャの作成と呼び出し1. ストアドプロシージャ...
PHP で MySQL サーバーが消えた問題1. 背景以前、Codeigniter でコンソール コ...
Ubuntu はソースが中国からなのでダウンロード速度が比較的遅いです。CentOS と異なり、yu...
この記事では、MySQL が 2 つのテーブルを比較して、異なるデータがあるかどうかを確認する方法を...
getElementByIdはオブジェクトを取得できませんブラウザがドキュメントを解析するときにはシ...
効率的に要件を満たし、コンポーネント ライブラリの肥大化や車輪の再発明を避けるために、私は以前、大画...