回答:
デフォルトではmy.cnfはありません。そのため、MySQLはすべてのデフォルト設定で起動します。独自のmy.cnfを作成してデフォルトを上書きする場合は、/ etc / my.cnfに配置します。
また、実行mysql --help
してリストにあるconfの場所を確認することもできます。
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults Print the program argument list and exit.
--no-defaults Don't read default options from any option file.
--defaults-file=# Only read default options from the given file #.
--defaults-extra-file=# Read this file after the global files are read.
ご覧のように、confファイルをバイパスしたり、コマンドラインでmysqlを呼び出したときに読み取る他のファイルを指定したりするためのオプションもあります。
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
行を見つけるのは実際には簡単でした。
自作のmysqlには、インストールのsupport-filesフォルダーにサンプル構成ファイルが含まれています。
ls $(brew --prefix mysql)/support-files/my-*
デフォルト設定を変更する必要がある場合は、これらのいずれかを開始点として使用できます。
cp $(brew --prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf
@rednawが指摘しているように、MySQLの自作インストールが含まれ/usr/local
ている可能性が高いため、my.cnfファイルをシステム/etc
フォルダーに追加しないでください。そのため、ファイルをにコピーするコマンドを変更しました/usr/local/etc
。
MySQLではなくMariaDBを使用している場合は、以下を使用します。
cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
/usr/local/
(これがデフォルトだと思います)、ルート特権を必要としないmy.conf
inを配置することもできます/usr/local/etc/
。
brew --prefix mariadb
ます。MariaDBディストリビューションにmy-default.cnf
は存在しませんmy-small.cnf
。使用してください。これを試してくださいcp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
調べる1つの方法:
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
mdfind -name my.cnf
ではlocate
コマンドの代わりに使用できます
locate my.cnf
は直接働きました。私は走らなかったsudo /usr/libexec/locate.updatedb
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf
そして/usr/local/etc/my.cnf
私が得たものでした
私のシステムでは
nano /usr/local/etc/my.cnf.default
テンプレートとして
nano /usr/local/etc/my.cnf
働くように。
実際には何も役に立ちませんでした-/etc/my.cnfファイルの設定を上書きできませんでした。ジョンが提案したように私は検索しましたhttps://stackoverflow.com/a/7974114/717251
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
別のmy.cnfが見つかりました
/usr/local/Cellar/mysql/5.6.21/my.cnf
このファイルを変更するとうまくいきました!Launch Agentを再起動することを忘れないでください:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
更新:
Homebrewがかなり最近インストールされている場合は、brew servicesコマンドを使用してmysqlを再起動する必要があります(インストールされているhomebrew mysqlバージョン、つまりmysqlまたはmysql@5.7を使用します)。
brew services stop mysql
brew services start mysql
brew services stop mysql
とbrew services start mysql
の代わりにlaunchctl unload ...
ライン。
mysql --help
はファイルのリストを表示するので、結果をパイプしてls
どのファイルが存在するかを確認すると便利です。
$ mysql --help | grep /my.cnf | xargs ls
ls: /etc/my.cnf: No such file or directory
ls: /etc/mysql/my.cnf: No such file or directory
ls: ~/.my.cnf: No such file or directory
/usr/local/etc/my.cnf
私の(Homebrewがインストールされている)MySQL 5.7の場合、ファイルはにあるよう/usr/local/etc/my.cnf
です。
MacOS(High Sierra)の場合、自作でインストールされたMySQL。
mysql環境からグローバル変数を増やすことは成功しませんでした。したがって、その場合は〜/ .my.cnfの作成が最も安全なオプションです。[mysqld]で変数を追加すると、変更が含まれます(注:[mysql]で変更した場合、変更が機能しない可能性があります)。
<〜/ .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M
mysqlサーバーを再起動します。変数を確認します。y
sql> SELECT @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + ---------------------- +
セット内の1行(0.00秒)