背景 AWS EC2 を使用するプロジェクトサービスがあります。セキュリティとパフォーマンスを考慮して、最近 Tencent Cloud の MySQL データベースを AWS RDS に移行する予定です。AWS のエクスポート ルールとセキュリティ グループにより、デフォルトの 3306 ポートとバインド アドレスを変更して、特定の IP アドレスへのアクセスを制限する必要があります。変更方法について Stackoverflow で検索しましたが、インターネット上のほとんどの情報は古く、現在の主流の MySQL バージョンに準拠していません (MySQL 5.7.27 を使用し、オペレーティング システムは Ubuntu 18.04.1 LTS) プロセス Stackoverflowで最も人気のある回答は非常にシンプルで、わずか3つのステップで変更できます。 /etc/my.cnf // 設定ファイルを見つける port = 3306 // 内容を変更する sudo service mysql restart // MySQL を再起動 しかし、リアルタイムではそれほど単純ではありません。上記の回答は古いバージョンでは機能するかもしれませんが、新しいバージョンでは /etc/my.cnf の下に何も見つかりません。ファイルが存在しないのです。 その後、公式ドキュメントをチェックして、/etc/mysql/my.cnf ディレクトリに設定ファイルを見つけました。ただし、設定ファイルを見つけたからといってすべてがうまくいくとは思わないでください。ファイルを開くと、スタイルが変更されていることがわかります。設定ファイルにはコンテンツがなく、他の 2 つの設定フォルダーを参照しているためです。/etc/mysql/my.cnf の具体的な内容は次のとおりです。 !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/ わかりました。少なくとも手がかりは得られました。パスをたどって、2 つのディレクトリ内の各ファイルを確認します。最終的に、mysql.conf.d/mysqld.cnf が探しているファイルのようです (公式ドキュメントでもこれが確認されています)。ファイルを開くと、変更する必要があるファイル プロパティが表示されます。 [mysqld] 利益 = 3306 bind-address = 127.0.0.1 // ローカルアクセスのみ許可 設定パラメータを必要なものに変更した後、問題は解決したと思いました。sudo service mysql restart を使用してサービスを再起動すると、イントラネット マシンにまだアクセスできないことがわかりました。netstat -ntlp を使用してローカル アドレスと外部アドレスを確認したところ、変更した設定が有効になっていないことがわかりました。手がかりがここで途切れたかのように、私は深い自信喪失に陥りました。 その後、一部のネットユーザーは、ファイル権限の問題かもしれないと指摘しました。ファイル権限が大きすぎる場合(グローバルに書き込み可能)、MySQLはセキュリティ上の理由から構成ファイルを読み込まず、独自の構成コピーファイルを読み取ります。コマンドを実行すると、次の警告が表示されました。 mysql --help | grep my.cnf mysql: [警告] 誰でも書き込み可能な設定ファイル '/etc/mysql/mysql.conf.d/mysqld.cnf' 無視されます。 優先順位、my.cnf、$MYSQL_TCP_PORT、 /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf 上記は、ファイルがグローバルに書き込み可能であるというリスクがあるため MySQL によって無視されることを意味し、MySQL が構成ファイルを読み取る順序をリストします。ここで、MySQL には複数の my.cnf 構成ファイルがあり、そのうちのいくつかはグローバル構成であり、いくつかはローカル構成であることがわかります。手がかりを見つけた後、処理ははるかに簡単になります。ファイルの権限を変更し、mysql --help を再度確認すると、警告が消えていることがわかります。具体的なコマンドは次のとおりです。 sudo chmod 644 /etc/mysql/mysql.conf.d/mysqld.cnf mysql --help | grep my.cnf 優先順位、my.cnf、$MYSQL_TCP_PORT、 /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf その後、sudo service mysql restart を実行し、Local Address と Foreign Address が my.cnf で設定した内容になっていることを確認しましたが、変更した設定は正常に実装されており、ファイルがグローバルに読み取り可能であるというセキュリティ問題が原因であることが確認できました。 要約する 最後に、MySQL セキュリティ ルールが原因で、構成の変更が有効になりませんでした。もちろん、ほとんどの場合、このルールはわかりません (公式 Web サイトのドキュメントを完全に読んでいなければ)。この問題の後、トラブルシューティングで回り道をせずに、できるだけ早く実際の問題を見つけるのに役立つ次の要約を用意しました。
さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Windows 10 で MySQL 8.0.12 の解凍バージョンをインストールして構成する方法 (グラフィック チュートリアル付き)
>>: mysqlを完全にアンインストールします。個人テストです!
テキストファイルの内容を並べ替える使用方法: ソート + オプション + ファイル名 (複数のファイ...
目次前の単語使用シナリオ参照HTML要素クラスコンポーネント機能コンポーネント[DOMノードを親コン...
PCサイトとモバイルサイトの分離設定にはnginxを使います。私のPCサイトとモバイルサイトは、SE...
JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明最近、...
1.アルパインイメージをダウンロードする [root@DockerBrian ~]# docker ...
現在、OK ボタンをクリックしたときやキーボードの Enter キーを押したときに操作を実行するとい...
この記事では、例を使用して MySQL カーソルの原理と使用方法を説明します。ご参考までに、詳細は以...
プロジェクトの背景最近、webpackのバージョンが古いプロジェクトがあります。 リーダー層では今の...
システムの入力と出力の管理1. システムの入力と出力を理解するLinuxシステムでは、1は正しい出力...
タイトルXML/HTML コードコンテンツをクリップボードにコピー< h1 >第 1 レ...
ORM とは何ですか? ORM は Object Relational Mapping の略で、オブ...
オンライン ビジネスにとってデータの一貫性と整合性が重要であることは明らかです。データが失われないよ...
目次ルートの場所が見つかりませんオフバイスラッシュ安全でない変数の使用スクリプト名$uri を使用す...
需要背景:ミニプログラムページに GIF ダイナミック画像を挿入しますが、GIF 画像は通常サイズが...
目次js の1. グローバルガードを登録する2. Vuex 状態管理グローバルキャッシュルート3. ...