背景 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を完全にアンインストールします。個人テストです!
MySQL は次の 3 種類のコメントをサポートしています。 1. 行末の「#」文字から。 2. 「...
ある日、リーダーはメイン ページに iframe を埋め込み、親ページと子ページ間で双方向にメッセー...
目次1. Dockerをインストールする2. カスタムネットワークアドレスを作成する3. Docke...
ブラウザによって動作が異なるだけでなく、フォントやテキスト サイズによっても動作が異なります。フォー...
アプリケーション ソフトウェアには通常、次のようなビジネス要件があります。新しいバージョンの APP...
Vue での v-on:clock の使用現在、vue.js フレームワークを学習しています。後で参...
推奨される Docker 学習教材: https://www.runoob.com/docker/d...
Windows 10 で Docker コンテナのポートにアクセスできない問題を解決する (ポート ...
取引トランザクションはビジネス ロジックの基本単位です。各トランザクションは一連の SQL ステート...
質問: index.html で、iframe が son.html を導入します。son.html...
Windows Server 2019 は、Microsoft が公式にリリースした最新のサーバー...
1. コマンドの紹介tac (cat の逆順) コマンドは、ファイルの内容を行単位で逆順に出力します...
目次圧縮ファイルをダウンロードするアドレス: https://dev.mysql.com/downl...
目次序文文章パラメータ例Lodash 実装:トーキー機能: castPath関数: stringTo...
今日、プログラムが間違った時刻を挿入し、フィールドがデフォルト値 CURRENT_TIMESTAMP...