環境条件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:エラーを報告する書き込み方法: GRANT OPTION を使用して、'123123...
目次1. はじめに2. 原則III. 実践3.1 インデックスプッシュダウンを使用しない3.2 イン...
目次1. ページレンダリング2. タグを切り替える3. タグを削除するこのようなタグはどのように記述...
1. Zabbixバックアップ [root@iZ2zeapnvuohe8p14289u6Z /]# ...
まとめHTML: 要素と v-cloak CSS: [v-cloak]{表示: なし}プロセスページ...
JDKのインストールシステムのインストールについてはあまり詳しく説明しません。インストール手順はオン...
前面に書かれた今日のインターネット分野では、Nginx は最も広く使用されているプロキシ サーバーの...
1: <a> タグを使用してページにリンクする場合、target 属性の役割は誰もが知っ...
最近、ブルートフォース攻撃によるサーバのクラッキングが頻発しています。侵入行為を大まかに分析し、よく...
データベースからクエリする必要があるテーブルに数万件のレコードがある場合、すべての結果を一度にクエリ...
src と href には違いがあり、混同される可能性があります。 src は現在の要素を置き換える...
この記事では、ポップアップウィンドウをクリックしたときにポップアップログインボックスを実現するための...
図に示すように: ポートの使用状況を確認します: sudo netstat -apn | grep ...
この記事では主に、Vue を使用してタブ ナビゲーション バーを実装し、flex レイアウトを使用し...
1. DNSサーバーの概念インターネットでの通信には IP アドレスの助けが必要ですが、数字に対する...