環境条件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. jsの位置づけを明確に理解する2. 明確な学習パス3. 自己規律と粘り強さ4. 練習し...
ほとんどのアプリケーション シナリオでは、緊急時に備えて重要なデータをバックアップし、安全な場所に保...
1. 環境の説明(1) CentOS-7-x86_64、カーネルバージョン uname -r は、 ...
私たちが毎日使っているブラウザや Word 文書のスクロール バーはなぜ右側にあるのでしょうか。多く...
著者は1年以上マイクロフロントエンドプロジェクトに取り組んできました。チームは10個のマイクロアプリ...
npm インストールチュートリアル: 1. Node.jsインストールパッケージをダウンロードする公...
1. 自然なレイアウト<br />レイアウトは変更せずに自動的に左揃えになります。 2....
MySQL マスタースレーブ設定MySQL のマスター/スレーブ レプリケーションと読み取り/書き込...
個人のウェブサイトがどんなに素晴らしいものであっても、サイバースペースの広大な海に浮かぶ小さなボート...
目次ソリューション分析スライス履歴書のダウンロード具体的な解決プロセス論理的分析フロントエンドサーバ...
MySQLとMariaDBの関係MariaDB データベース管理システムは MySQL のブランチで...
1. パラダイムこのパラダイムの英語名は Normal Form であり、1970 年代にリレーショ...
目次ここでの問題は次の通りです:解決策1:解決策2: コンストラクタで初期化を割り当てる採掘場の概要...
MySql データベース システムをインストールして構成します。 1. ダウンロード http://...
目次1. 問題を発見する2.重複したデータを残さずにすべて削除する3. 削除テーブルから重複データを...