回答:
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ファイルを一覧表示し、使用しようとし、最終的に使用します。
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
open(...
回線がありません。代わりに、で終わる4行があり = -1 Err#2
ます。どのファイルが読み込まれたかをどのようにして知ることができますか?
sudo dtruss mysqld 2>&1|grep my.cnf
。
素晴らしい「ハイパフォーマンス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
!includedir
たファイルがリストされるとは思わない。!includedir
私の/etc/mysql/my.cnf
ファイルのディレクティブが機能しない理由を理解しようとしています。
mysqld
フルパスで呼び出す必要があるのはなぜですか?
実行mysql --verbose --help | less
すると、11行.cnf
目でどのファイルを探すかがわかります。
またmysql --print-defaults
、設定値がどのように使用されるかを示すこともできます。これは、ロードしている構成ファイルだけを識別する場合にも役立ちます。
mysqld
代わりに使用したい場合がありますmysql
mysqld --print-defaults
、私がこの質問をググったとき、まさに私が欲しかったものを与えてくれました。
私は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
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
デフォルトで入っています。
mysqld --help --verboseは危険です。インスタンスを実行するためにpidfileを簡単に上書きできます!--pid-file = XYZと一緒に使用します
ああ、また、複数のインスタンスを実行している場合は、実際には使用できません。デフォルト値のみが表示されます。
それについて本当に良い記事:
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「デフォルトオプション」
これは本当に便利だと思いました:
Control Panel -> Administration Tools
Properties
Path to executable
、パスが含まれているかどうかを確認しますmy.ini/my.cfg
Windowsを使用している場合は、Sysinternals procmonを使用できます。それを開き、このようにフィルター設定を構成してから、「追加」をクリックします。これで、procmonはmysqldを監視します。
mysqlサーバーを通常どおりに起動します。Procmonはmysqlのバックグラウンドオペレーションをキャプチャします。「my」を検索します。procmonの結果ウィンドウに、次のようなものが表示されます。
mysqlが構成ファイルのリストを順番に検索することは明らかです。私の場合、それはC:\mysql-5.7.19-winx64\my.cnf
正常に検出されたので、これを使用しています。