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を実行するための詳細なチュートリアル

推薦する

JavaScript の toLocaleString() での時間フォーマットに関する新しいアイデア

目次1. 時刻表示に関する従来の考え方2. 時刻の書式設定 toLocaleString() Obj...

Vue-Jest自動テストの基本構成の詳しい説明

目次インストール構成よくある間違い事前テスト作業依存関係の扱いインスタンスとDOMを生成する要約する...

Linux ファイアウォールの状態確認方法の例

Linuxファイアウォールの状態を確認する方法1. 基本操作 # ファイアウォールのステータスを表示...

MySQL テーブル フィールドの時間設定のデフォルト値

アプリケーションシナリオデータ テーブルでは、アプリケーションは各データがいつ作成されたかを記録する...

Reactの二次連携を実現する方法

この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...

IE環境では、divの高さはフォントの高さよりも大きくなければならないと規定されています。

コードをコピーコードは次のとおりです。 <div class="content&qu...

VMWare14.0.0のUbuntu仮想マシンで共有フォルダを設定する

これは私の最初のブログ投稿です。時間の制約があるため、どのようにフォーマットすればよいかわかりません...

Mysqlツリー再帰クエリの実装方法

序文部門テーブルなどのデータベース内のツリー構造データの場合、部門のすべての従属部門または部門のすべ...

MySQL 集計統計データの低速クエリの最適化

前面に書かれた注文テーブル、アクセス記録テーブル、商品テーブルなど、日常生活でデータベースを操作する...

MYSQL SERVER のログファイルを縮小する方法

トランザクション ログには、関連するデータベースに対する操作が記録され、データベースの回復に関連する...

CentOS VPS に SSH 経由で MySQL をインストールする方法

yum install mysql-serverと入力します。続行するにはYを押してくださいインスト...

Dockerはプライベートライブラリイメージを完全に削除します

まず、インターネット上の一般的な慣行を見てみましょうデフォルトでは、プライベート ライブラリはイメー...

スタックメニューを実装するためのjQueryプラグイン

jQueryプラグインの毎日の積み重ねメニュー、参考までに、具体的な内容は次のとおりです。スタックメ...

ウェブページのカラーマッチングスキルについての簡単な説明(フロントエンド開発者必読)

一般的に、Web ページの背景色は、より柔らかく、よりシンプルで、より明るく、暗いテキストとマッチし...

Vue の DOM の非同期更新の簡単な分析

目次Vue が DOM を非同期更新する原理1 実際の DOM 要素を取得できるのはいつですか? 2...