对于自制的mysql安装,my.cnf在哪里?

时间:2011-11-01 22:55:17

标签: mysql homebrew

对于自制的mysql安装,my.cnf在哪里?它安装一个吗?

14 个答案:

答案 0 :(得分:266)

自制软件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

如果您使用的是MariaDB而不是MySQL,请使用以下命令:

cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf

答案 1 :(得分:242)

默认情况下没有my.cnf。因此,MySQL以所有默认设置启动。如果您想创建自己的my.cnf以覆盖任何默认值,请将其放在/etc/my.cnf。

此外,您可以运行mysql --help并查看列出的配置位置。

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时要读取的其他文件。

答案 2 :(得分:25)

找到的一种方法:

sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf

答案 3 :(得分:16)

没有什么能帮助我 - 我无法覆盖/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

更改此文件对我有用!不要忘记重启启动代理:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

更新

如果你有一个相当新的自制软件安装,你应该使用brew服务命令重新启动mysql(使用你安装的自制mysql版本,即mysql或mysql@5.7):

brew services stop mysql
brew services start mysql

答案 4 :(得分:10)

在您的shell类型my_print_defaults --help

在结果的底部,您应该能够看到服务器从中读取配置的文件。它打印的内容如下:

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

答案 5 :(得分:10)

在我的系统中它是

nano /usr/local/etc/my.cnf.default 

作为模板和

nano /usr/local/etc/my.cnf

正在工作。

答案 6 :(得分:7)

由于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上。

答案 7 :(得分:4)

我相信答案是否定的。在〜/ .my.cnf或/ usr / local / etc中安装一个似乎是首选的解决方案。

答案 8 :(得分:4)

您可以找到特定包提供my.cnf文件的位置,例如

brew list mysql # or: mariadb

除了验证是否已读取该文件外,您还可以运行:

sudo fs_usage | grep my.cnf

将显示与该文件相关的实时文件系统活动。

答案 9 :(得分:3)

服务器版本:8.0.19 Homebrew。 macOS Catalina 10.15.5并通过Homebrew安装了MySQL。在此找到该文件:

/usr/local/etc/my.cnf

This solution帮助了:)

答案 10 :(得分:1)

如果是Homebrew,mysql也会在其Cellar目录中查找my.cnf,例如:

/usr/local/Cellar/mysql/5.7.21/my.cnf

对于这种情况,我们希望使配置保持接近二进制文件-如果缺少my.cnf,请在此处创建。

更改后重新启动mysql:

brew services restart mysql

答案 11 :(得分:0)

对于MacOS(High Sierra),已与家庭计算机一起安装的MySQL。

从mysql环境增加全局变量失败。因此,在这种情况下,创建〜/ .my.cnf是最安全的选择。使用[mysqld]添加变量将包括更改(注意:如果使用[mysql]进行更改,则更改可能无效)。

  

<〜/ .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_pa​​cket =   2048M net_buffer_length = 512M

重新启动mysql服务器。并检查变量。 y

  

sql> SELECT @@ max_allowed_pa​​cket;   + ---------------------- + | @@ max_allowed_pa​​cket |   + ---------------------- + | 1073741824 |   + ---------------------- +

设置1行(0.00秒)

答案 12 :(得分:0)

运行

sudo find / -name my.cnf

通常第一个结果是正确的。 应该在

/usr/local/etc/

答案 13 :(得分:-1)

  1. $ps aux | grep mysqld /usr/local/opt/mysql/bin/mysqld --basedir=/usr/local/opt/mysql --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql/lib/plugin

  2. 将my.cf文件拖放到/usr/local/opt/mysql

  3. brew services restart mysql