Linux に mysql をインストールするときに /etc に my.cnf ファイルがない問題を解決する

Linux に mysql をインストールするときに /etc に my.cnf ファイルがない問題を解決する

今日、mysql ポートを変更したいと思ったのですが、/etc/ ディレクトリに my.cnf ファイルがないことがわかったので、オンラインで解決策があるかどうか調べました。

Linux で my.cnf が見つからないというブログをたくさん読みましたが、そのすべてで my-medium.cnf を etc に移動して my.cnf に名前を変更するように書かれていましたが、私の場合も my-medium.cnf がありません。後で知ったのですが、5.7.18 以降では公式がバイナリ パッケージで my-default.cnf ファイルを提供しなくなったそうです。

詳細については、https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html を参照してください。

では、ポート番号を変更するにはどうすればよいでしょうか?実際には、/etc/mysql/mysql.conf.d を変更するだけで済みます。

補足: mysql を起動すると、/etc/my.cnf は無視されるというメッセージが表示されます。

今日、テスト開発者との問題に対処していたところ、MySQL インスタンスの起動に失敗することを発見しました。プロセスは次のとおりでした。

MySQL インスタンスが閉じられていることが判明しました。MySQL インスタンスを起動するコマンドを実行すると、警告が表示されます。

# サービス mysql.server を起動します
警告: 誰でも書き込み可能な設定ファイル '/etc/my.cnf' は無視されます
MySQL の起動に成功しました!

次の内容を示す mysql 起動ログを確認します。

151014 11:39:24 mysqld_safe /data/mysql/data のデータベースを使用して mysqld デーモンを起動しています
警告: 誰でも書き込み可能な設定ファイル '/etc/my.cnf' は無視されます

これはおそらく、権限がグローバルに書き込み可能であり、どのユーザーでも書き込みができることを意味します。 MySQL は、このファイルが他のユーザーによって悪意を持って変更される可能性があることを懸念しているため、この構成ファイルを無視します。この方法では、mysql をシャットダウンできません。

このとき、MySQL データベースの設定を照会すると、my.cnf で設定された一部のパラメータが MySQL インスタンスで有効になっていないことがわかります。

これは、/etc/my.cnf も 777 権限に変更されているためです。

# ls -la /etc/my.cnf
-rwxrwxrwx 1 ルート ルート 1120 7月 31 10:28 /etc/my.cnf

/etc/my.cnf の権限が多すぎるため、インスタンスを起動またはシャットダウンできなくなります。権限を 644 に変更する必要があります。操作は次のとおりです。

# ls -la /etc/my.cnf
-rwxrwxrwx 1 ルート ルート 1120 7月 31 10:28 /etc/my.cnf
# 
# 
# chmod 644 /etc/my.cnf
# 
# ls -la /etc/my.cnf
-rw-r--r-- 1 ルート ルート 1120 7月 31 10:28 /etc/my.cnf
#

/etc/my.cnf を確認し、インスタンスを再起動します。

151014 14:05:54 mysqld_safe mysqld は pid ファイル /data/mysql/data/yq-xg-dev122.pid から終了しました
151014 14:06:08 mysqld_safe /data/mysql/data のデータベースを使用して mysqld デーモンを起動しています
151014 14:06:08 [注意] プラグイン「FEDERATED」は無効になっています。
151014 14:06:08 InnoDB: InnoDB メモリヒープが無効になっています
151014 14:06:08 InnoDB: ミューテックスと rw_locks は GCC アトミック組み込み関数を使用します
151014 14:06:08 InnoDB: 圧縮テーブルは zlib 1.2.3 を使用します
151014 14:06:08 InnoDB: LinuxネイティブAIOの使用
151014 14:06:08 InnoDB: バッファプールを初期化しています。サイズ = 128.0M
151014 14:06:08 InnoDB: バッファプールの初期化が完了しました
151014 14:06:08 InnoDB: サポートされている最高のファイル形式は Barracuda です。
151014 14:06:08 InnoDB: バックグラウンドスレッドの開始を待機しています
151014 14:06:09 InnoDB: 1.1.8 が起動しました。ログ シーケンス番号 18872844901
151014 14:06:09 [警告] 'proxies_priv' エントリ '@ root@xinge122' は --skip-name-resolve モードで無視されます。
151014 14:06:09 [メモ] イベント スケジューラ: 0 件のイベントが読み込まれました
151014 14:06:09 [注記] /usr/local/mysql/bin/mysqld: 接続準備完了。
バージョン: '5.5.19-log' ソケット: '/tmp/mysql.sock' ポート: 3306 MySQL コミュニティ サーバー (GPL)

/etc/my.cnf の権限を通常のものに変更すると、MySQL インスタンスを正常に起動できることがわかります。

この事例から、次のようなインスピレーションを得ることができます。

Linux オペレーティング システムのルート ディレクトリ内のディレクトリとファイルの権限を変更することは非常に危険です。

たとえば、/etc/ssh ディレクトリの権限が変更されると、ssh は使用できなくなります。/etc/security または /etc/init.d/sshd ファイルが変更されると、root ユーザーはシステムにログインできなくなります。

したがって、システム権限、特に気軽に変更できない /etc/ ディレクトリ下のファイル権限には注意する必要があります。

開発と運用保守の両方を標準化する必要があり、ルートユーザーとしての直接操作は可能な限り避ける必要があります。ソフトウェアとアプリケーションの保存場所も別のディレクトリに配置し、各アプリケーションは別のユーザーが操作する必要があります。

システムファイルを安易に変更しないでください。特に、/etc/ 関連のシステムファイルを安易に変更しないでください。変更する場合は、まずテストして、変更する前に問題がないことを確認してください。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Linux での MySQL マルチインスタンスの展開とインストール ガイド
  • Linux での MySQL 8.0.25 のインストールと設定のチュートリアル
  • mysql8.0.23 Linux (centos7) のインストールの完全かつ詳細なチュートリアル
  • Linux で Docker を使用して MySQL をインストールする手順
  • Aliyun Linux のコンパイルとインストール php7.3 tengine2.3.2 mysql8.0 redis5 プロセスの詳細な説明
  • Linux環境にMySQLデータベースをインストールする詳細なチュートリアル
  • Linux で mysql-8.0.20 をインストールするための詳細なチュートリアル
  • Linux での MySQL のインストールに関するチュートリアル

<<:  HTML テーブル マークアップ チュートリアル (18): テーブル ヘッダー

>>:  Dockerで複数のSpringbootを実行するための詳細なチュートリアル

推薦する

Docker の MySQL コンテナのタイムゾーン問題の修正

序文Ahhang が Springboot プロジェクトを開発していたとき、フロントエンドから検証コ...

Web アプリ開発時間を短縮する 10 の時間を節約するヒント (グラフィカル チュートリアル)

今日の開発環境では、速いほど良いです。 「迅速なアプリケーション開発」、「アジャイル ソフトウェア開...

JavaScriptのプリミティブ値とラッパーオブジェクトの詳細な紹介

目次序文文章プリミティブ型プリミティブ値ラッパーオブジェクト物体コンストラクタ通常機能(関数)プリミ...

MySQL マスタースレーブレプリケーションの遅延の原因と解決策

目次レプリケーション ロジックの簡単な概要:遅延の原因と解決策〇メインデータベースへの頻繁なDMLリ...

Vueはシンプルなショッピングカートの例を実装します

この記事では、参考までに、シンプルなショッピングカートケースを実装するためのVueの具体的なコードを...

Dockerを使用してNextCloudネットワークディスクを展開する方法

NextCloud コンピュータ上の任意のファイルやフォルダを共有し、NextCloud サーバーと...

JS配列インデックス検出におけるデータ型の問題の詳細な説明

WeChat アプレット プロジェクトを書いていたとき、その中に「都市選択」機能がありました。作者は...

JavaScript で実装された 7 つのソート アルゴリズムの概要 (推奨!)

目次序文バブルソート基本アルゴリズム2 番目の書き方は、基本的なアルゴリズムに基づいて改良されていま...

XHTML+CSS Web ページ作成における美しいスタイルシートの適用

これはかなり前に書かれた記事です。今となっては、その中の考え方は学ぶ価値があるように思えます。jb5...

nginx リバース プロキシの魔法のスラッシュについての簡単な説明

nginx リバース プロキシを設定する場合、location と proxy_pass のスラッシ...

Linux環境でタイムゾーンを設定できない問題を解決

Linuxでタイムゾーンを変更する場合、常に変更することはできませんAsia/Shanghai に変...

マークアップ言語 - CSS レイアウト

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

Ubuntu 18.04 MySQL 8.0 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0のインストールと設定方法を参考までに紹介します。具体的な内容は以下の...

Alibaba Cloud に Docker をインストールする際の問題と解決策

質問Alibaba Cloud イメージを使用して Docker をインストールすると、次の図に示す...

Docker クリーンアップ環境操作

丁寧に掃除を始めましょう!未使用ボリュームの一覧docker ボリューム ls -qf dangli...