默认情况下没有 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 时指定要读取的其他文件。
自制 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
文件夹中,因此我更改了将文件复制到 { 3}。
如果您使用的是 MariaDB 而不是 MySQL,请使用以下命令:
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/
中安装了 MySQL(我认为这是默认设置),您也可以将 my.conf
放在 /usr/local/etc/
中,这不需要 root 权限。
brew --prefix mariadb
。在 MariaDB 发行版中,my-default.cnf
不存在 - 所以使用 my-small.cnf
。试试这个cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
一种查找方法:
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
作为工作。
由于 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
上。
没有什么真正帮助我 - 我无法覆盖 /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
更新:
如果您最近安装了 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 ...
行。
在你的 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
添加另一个答案原因
接受是错误的。我们说的是 Homebrew 安装的 mysql,而不是手动安装的 MySQL。
以前的答案可能有点过时,M1 Mac 上的 Homebrew 存储在不同的位置
会议
my.cnf
在安装过程中由 Homebrew 复制到以下位置
/usr/local/etc/my.cnf 用于 x86 Mac
/opt/homebrew/etc/my.cnf 适用于 M1 Mac
Homebrew 选择 /usr/local
或 /opt/homebrew
来存储包,因此默认的 conf 文件不是存储在 /etc/
中而是存储在 /usr/local/etc
或 /opt/homebrew/etc
中。
事实上,自制软件在从源代码编译 mysql
期间更改了 -DSYSCONFDIR=
(默认配置位置)标志。
启动服务
一个简短的回答:运行 brew info mysql
并检查提示。
推荐的方式是 brew services start mysql
,它使用 launchd
来管理服务。 (launchd
在 macOS 上被视为 systemd
替代品)
对于任何想要手动启动它的人,没有任何选项的 mysql.start
足以启动服务。 (mysql.start
是 mysql
提供的帮助启动服务的脚本)
brew services run mysql
来运行服务器,而无需将其设置为自动启动。
服务器版本:8.0.19 Homebrew。 macOS Catalina 10.15.5 并通过 Homebrew 安装 MySQL。在这里找到这个文件:
/usr/local/etc/my.cnf
This solution 帮助 :)
您可以找到特定软件包提供 my.cnf
文件的位置,例如
brew list mysql # or: mariadb
除了验证是否读取了该文件之外,您还可以运行:
sudo fs_usage | grep my.cnf
它将实时显示与该文件相关的文件系统活动。
我相信答案是否定的。在 ~/.my.cnf 或 /usr/local/etc 中安装一个似乎是首选解决方案。
如果是 Homebrew,mysql 也会在它的 Cellar 目录中查找 my.cnf,例如:
/usr/local/Cellar/mysql/5.7.21/my.cnf
对于这种情况,人们更喜欢将配置保持在二进制文件附近 - 如果它丢失,请在此处创建 my.cnf
。
修改后重启mysql:
brew services restart mysql
跑
sudo find / -name my.cnf
通常第一个结果是正确的。应该在
/usr/local/etc/
如果您使用的是 mac m1 (Apple Silicon),my.cnf 位于
/opt/homebrew/etc/my.cnf
也可以通过 mysql --help
找到
我已经使用 Homebrew 安装了 MySQL 5.7
my.cnf 文件位于“/opt/homebrew/etc/my.cnf”
对于 MacOS (High Sierra),使用 home brew 安装的 MySQL。
从 mysql 环境中增加全局变量不成功。所以在这种情况下,创建 ~/.my.cnf 是最安全的选择。使用 [mysqld] 添加变量将包括更改(注意:如果使用 [mysql] 更改,更改可能不起作用)。
<~/.my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M
重启mysql服务器。并检查变量。是的
sql> 选择@@max_allowed_packet; +------------------------+ | @@max_allowed_packet | +------------------------+ | 1073741824 | +------------------------+
一组中的 1 行(0.00 秒)
$ps 辅助 | 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 将 my.cf 文件放到 /usr/local/opt/mysql brew services restart mysql
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
实际上更容易找到这些行。