Linux の MySQL 設定の変更が有効にならない問題の解決方法

Linux の MySQL 設定の変更が有効にならない問題の解決方法


背景

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 サイトのドキュメントを完全に読んでいなければ)。この問題の後、トラブルシューティングで回り道をせずに、できるだけ早く実際の問題を見つけるのに役立つ次の要約を用意しました。

  1. 問題が発生した場合は、まず公式ウェブサイトの最新のドキュメントを確認してください。
  2. 情報時間を確認してください。インターネット上の多くの情報は長すぎて、誤解を招く可能性があります。
  3. 警告メッセージを注意深く読み、トラブルシューティングツールとコマンドを習得する
  4. 基礎知識は非常に重要です。問題が深くなるほど、プログラマーの内面の強さが試されます。

さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux に Apache と PHP をインストールする; Apache+PHP+MySQL 構成戦略
  • MySQL 5.7.13 のインストールと設定方法のグラフィック チュートリアル (Linux)
  • LinuxでのMySQLのインストールと設定 MySQL設定パラメータの詳細な説明
  • 最も完全な MySQL 5.7.13 のインストールおよび構成方法のグラフィック チュートリアル (Linux) を強くお勧めします。
  • Linux サーバー上の MySQL 設定ファイルのパスを表示する方法
  • Linux mysql5.6バージョンのインストールと設定のプロセス
  • Linux での MySQL データベース サーバーのマスター スレーブ同期を指定する構成例
  • Linux での Apache、MySQL、PHP のインストールと設定に関する詳細なメモ
  • CentOS Linux で Apache2+PHP5+MySQL5+GD ライブラリを設定する方法
  • Linux 仮想マシンでの MySQL 5.7 のインストールと設定のチュートリアル

<<:  Windows 10 で MySQL 8.0.12 の解凍バージョンをインストールして構成する方法 (グラフィック チュートリアル付き)

>>:  mysqlを完全にアンインストールします。個人テストです!

推薦する

Docker で MySQL マスター スレーブ レプリケーションを実装するためのサンプル コード

目次1. 概要1. 原則2. 実装3. スレーブインスタンスを作成する4. マスタースレーブ構成要約...

Linux で実行中のすべてのプロセスを表示する方法

ps コマンドを使用できます。プロセスの PID など、現在実行中のプロセスに関する関連情報を表示で...

JavaScript で文字列を数値に変換する方法

目次1.parseInt(文字列、基数) 2. 数値() 3.parseFloat()主なメソッドは...

Apache Webサーバーのインストールと設定方法

信頼性が高く、人気があり、簡単に構成できる Web サーバーである Apache で独自の Web ...

一般的な HBase 運用および保守ツール 10 個の概要

概要: HBase には、ユーザーに管理、分析、修復、デバッグ機能を提供するための多くの操作および保...

HTMLのimgタグで画像の中心部分だけを表示する方法(3つの方法)

HTML の img タグで画像の中心を表示する方法は、現在 3 つあります。ここで記録しておきま...

MySql バッチ挿入の最適化 SQL 実行効率の例の詳細な説明

MySql バッチ挿入の最適化 SQL 実行効率の例の詳細な説明itemcontractprice ...

MySQL データベース アーキテクチャの詳細

目次1. MySQL アーキテクチャ2. ネットワーク接続層3. データベースサービス層4. 接続プ...

美しい FLASH ウェブサイト デザイン例 50 選

Flashにより、デザイナーや開発者はブラウザ上でリッチなコンテンツを提供し、動き、インタラクティブ...

MacOS Catalina アップグレード後の VMware ブラック スクリーン問題に対する完璧な解決策の詳細な説明

MacOS Catalina アップグレード後の VMware ブラック スクリーンに対する完璧なソ...

HTML テーブルタグチュートリアル (13): 内部境界スタイル属性ルール

RULES を使用すると、テーブルの内部境界のスタイルを制御できます。基本的な構文<TABLE...

リモートホスト上でスクリプトや命令を実行する Zabbix の詳細な説明

シナリオ要件1. zabbix_server Web インターフェースのスクリプト機能を使用すると、...

Youdaの新しいプチビューの実装

目次序文導入ライブ使いやすいルートスコープマウント要素の指定ライフサイクルコンポーネントグローバル状...

haslaylout と bfc 解析の理解

1. haslayout と bfc は IE 固有の標準属性です。 2. BFC はページ上の分離...