環境条件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サンプルコード
>>: 完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方
この記事では、ディープラーニングフレームワーク keras を使用して、SQL インジェクションの特...
プライベート Docker レジストリのインストールとデプロイは、Docker テクノロジーを導入、...
Mysql でよく使用される表示コマンド1. 現在のデータベース サーバー内のデータベースの一覧を表...
なぜ高さを設定できるのでしょうか。<h1 /> などの要素とは異なり、「セミインライン」...
問題の説明 (以下の説明は Windows 環境に限定されます): D:\develop\ide\m...
VMware が異常シャットダウンした後、再起動すると「この構成ファイルを排他的にロックできませんで...
今日は、タブ バーをクリックして切り替えるという目的を実現するために、js と jQuery を使用...
前提条件: Percona 5.6 バージョン、トランザクション分離レベルは RR mysql>...
序文サーバーシステム環境は、CentOS 6.5 (最終) です。 FFmpeg をサーバーに正常に...
乱雑なログ日常的に使用される Nginx は、静的リソース サーバーとリバース プロキシ サーバーの...
目次マッピングとは何かオブジェクトとマップの違いマップの共通メソッド宣言と初期化割り当てセットキー値...
目次1. 主キーが存在する2. 主キーはないが、一意のインデックスが存在する3. 共同主キーまたは共...
静的ウェブサイトをホストできるサーバーは数多くあります。この記事では、nginx、apache、to...
目次概要node.js でマルチコア CPU を最大限に活用する方法Node で子プロセスを作成する...
Web ページ制作では、input と img が同じ行に配置されることが多く、img タグが常に ...