使用されているMySQL構成ファイルを特定する


回答:


60

Linuxを使用している場合はstrace、たとえばで「mysqld」を起動し strace ./mysqldます。

他のすべてのシステムコールの中には、次のようなものがあります。

stat64("/etc/my.cnf", 0xbfa3d7fc)       = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3

ご覧のとおり、.. itは.cnfファイルを一覧表示し、使用しようとし、最終的に使用します。


9
そして、何も台無しにせずに実行中のシステムでそれを行う方法は?
ミラノバブスコフ

5
@MilanBabuškovMySQL ps auxfに対して実行されたコマンドを実行して見つける必要があります。通常、次のようなものになりますmysqld --basedir=/usr/local/mysql ...(...は、コマンドにフラグがさらにある可能性があることを意味しますが、すべてを一覧表示することはありません)。Linuxを使用している場合は、/etc/init.d/mysqld stopまたはmysqladmin -u root -p shutdownです。次にstrace、コピーしたmysqlコマンドで実行します。それは次のようになりますので、そう:strace mysqld --basedir=/usr/local/mysql
Hengjie

open(...回線がありません。代わりに、で終わる4行があり = -1 Err#2ます。どのファイルが読み込まれたかをどのようにして知ることができますか?
mgPePe 2014年

4
fwiiw、Macでは、straceの代わりにdtrussを使用できますsudo dtruss mysqld 2>&1|grep my.cnf
バイタリー2014年

268

素晴らしい「ハイパフォーマンスMySQL」O'Reillyの本からの引用:

$ which mysqld
/usr/sbin/mysqld

$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf

2
リストにある最後のファイルが勝つと思いますか?
mlissner 2012

5
それは奇妙です..私はそれらのすべてをチェックしましたが、それらはすべて空です(私のMac上で)。
13

7
これはロードされた構成を提供しません。ロードされる可能性があるかなり可能性のあるカスタム構成
mgPePe

4
これでで指定され!includedirたファイルがリストされるとは思わない。!includedir私の/etc/mysql/my.cnfファイルのディレクティブが機能しない理由を理解しようとしています。
Buttle Butkus

2
mysqldフルパスで呼び出す必要があるのはなぜですか?
ペインピーター2018

65

実行mysql --verbose --help | lessすると、11行.cnf目でどのファイルを探すかがわかります。

またmysql --print-defaults、設定値がどのように使用されるかを示すこともできます。これは、ロードしている構成ファイルだけを識別する場合にも役立ちます。


1
これはmysqlがこれを行うための推奨方法であるため、+ 1。ウィンドウの場合、コンテンツを分析する場合は、出力をファイルにダンプするのが1つの簡単な方法です。
kta

Windowsでは、場所のリストは表示されましたが、正しい場所は表示されませんでした。代わりに、mysqlワークベンチ(stackoverflow.com/a/17953456/1504300)を使用して検索できました。
15

3
重要かどうかはわかりませんが、mysqld代わりに使用したい場合がありますmysql
nl-x

2
また、Windowsではmy.iniがProgramDataディレクトリから読み取られることを経験していますが、これはここで提案する回答には表示されません。
nl-x

2
に賛成してmysqld --print-defaults、私がこの質問をググったとき、まさに私が欲しかったものを与えてくれました。
Lundbergによる

28

私はWindowsを使用していて、MySQLコミュニティ5.6の最新バージョンをインストールしました

構成ファイルが使用するものを確認するために行ったのは、管理ツール>サービス> MySQL56>右クリック>プロパティに移動して、実行可能ファイルへのパスを確認することでした。

"C:/ Program Files / MySQL / MySQL Server 5.6 / bin \ mysqld" --defaults-file = "C:\ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini" MySQL56


これはMySQL 5.7でも機能します。C:\ProgramData\MySQL\MySQL Server 5.7\my.iniデフォルトで入っています。
ライアンシリントン

18

代替は使用することです

mysqladmin variables

2
実際には、cnfファイルが変数のどこにあるかは表示されません。現在、MySQL 5.5.20を実行しています。ただし、これは以前に変数で見たように、昔はうまくいったと言えます。おそらく5.5に移行してから何かが変わったのでしょう。
Hengjie

13

mysqld --help --verboseは危険です。インスタンスを実行するためにpidfileを簡単に上書きできます!--pid-file = XYZと一緒に使用します

ああ、また、複数のインスタンスを実行している場合は、実際には使用できません。デフォルト値のみが表示されます。

それについて本当に良い記事:

MySQL構成ファイルを見つける方法は?


9

ubuntuで簡単なテストをしました:

  • /etc/mysql/my.cnfを作成したインストール済みのmysql-server

  • mysqld --verbose --help | grep -A 1「デフォルトオプション」

110112 13:35:26 [注意]プラグイン 'FEDERATED'が無効になっています。
デフォルトのオプションは、次のファイルから指定された順序で読み取られます。/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf〜/ .my.cnf

  • /etc/my.cnfと/usr/etc/my.cnfを作成し、それぞれ異なるポート番号を使用した

  • mysqlを再起動しました-/usr/etc/my.cnfで設定されたポート番号を使用していました

また、mysqldの--defaults-fileオプションも見つかりました。そこで設定ファイルを指定すると、/ usr / sbin / mysqld --verbose --help |が何を返すかに関係なく、そのファイルのみが使用されます。grep -A 1「デフォルトオプション」



3

これは本当に便利だと思いました:

  1. 以下のサービスでMySQLプロセスを見つけます。 Control Panel -> Administration Tools
  2. 右クリックして選択 Properties
  3. をクリックして選択しPath to executable、パスが含まれているかどうかを確認しますmy.ini/my.cfg

1
これは、Server 2008のインストールでうまくいきました。
delliottg 2016年

2

一部のサーバーには、複数のMySQLバージョンがインストールおよび構成されています。以下のUnixコマンドで実行されている正しいバージョンを扱っていることを確認してください。

ps -ax | grep mysql

1

サービスとしてmysqlを使用してWindowsサーバーを実行している人にとって、実行している構成ファイルを見つける簡単な方法は、サービスコントロールパネルを開き、mysqlサービス(私の場合は「MYSQL56」)を見つけ、右クリックしてプロパティをクリックすることです。 。次に、ここから、「実行可能defaults-fileファイルへのパス」を確認できます。このファイルには、構成ファイルの場所を指すスイッチがあります。


1

Macを実行している場合に備えて、これは次の方法でも実現できます。

sudo dtruss mysqld 2>&1 | grep cnf

1

Windowsを使用している場合は、Sysinternals procmonを使用できます。それを開き、このようにフィルター設定を構成してから、「追加」をクリックします。これで、procmonはmysqldを監視します。

ここに画像の説明を入力してください

mysqlサーバーを通常どおりに起動します。Procmonはmysqlのバックグラウンドオペレーションをキャプチャします。「my」を検索します。procmonの結果ウィンドウに、次のようなものが表示されます。

ここに画像の説明を入力してください

mysqlが構成ファイルのリストを順番に検索することは明らかです。私の場合、それはC:\mysql-5.7.19-winx64\my.cnf正常に検出されたので、これを使用しています。


これは基本的に、Windowsの場合のトップアンサーと同等です。ありがとうございました。
アーロンウォレンティーン

0

私はmysqlをインストールしましたbrew install mysqlを使用します

mysqld --verbose --help | less

そしてそれは示しています:

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.