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

Posted

技术标签:

【中文标题】对于自制 mysql 安装,my.cnf 在哪里?【英文标题】:For homebrew mysql installs, where's my.cnf? 【发布时间】:2011-12-19 21:50:36 【问题描述】:

它安装一个吗?

【问题讨论】:

【参考方案1】:

一种查找方法:

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

【讨论】:

很棒的答案,我了解了 locate.updatedb。但是,默认没有配置文件,请看下面的答案 您可以在 OSX 上使用 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 是我得到的【参考方案2】:

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

【讨论】:

在我的 MBP 上,只有 /etc/my.cnf 允许我影响 mysql 的 Homebrew 安装。【参考方案3】:

默认没有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 时指定要读取的其他文件。

【讨论】:

这似乎不再是这样了;我在 /usr/local/Cellar/mysql/5.6.15/ (或您安装的任何版本)中看到了一个 my.cnf 文件 @williamt "mysql --help" 没有列出正在使用的文件,我认为这只是安装文件附带的默认值 我在 5.6.26 上看不到。 5.6.26 开启可以通过运行定位:ls $(brew --prefix mysql)/*.cnf mysql --help | grep cnf 实际上更容易找到这些行。【参考方案4】:

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

【讨论】:

sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf 如果 Homebrew 将 MySQL 安装在 /usr/local/ 中(我认为这是默认的),您也可以将 my.conf 放在 /usr/local/etc/ 中,不需要 root 权限。 brew --prefix mysql 没有给出正确的路径,对我来说,它显示'/usr/local/Cellar/mysql/5.7.16',但确实mariadb安装在'/usr /local/opt/mariadb/' @zhaozhi 使用brew --prefix mariadb。在 MariaDB 发行版中,my-default.cnf 不存在 - 所以使用my-small.cnf。试试这个cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf 这必须是公认的答案。第一个是不正确的。提出的问题与自制软件有关。【参考方案5】:

在你的 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

【讨论】:

【参考方案6】:

没有什么真正帮助我 - 我无法覆盖 /etc/my.cnf 文件中的设置。 所以我像约翰建议的那样搜索https://***.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 mysqlbrew services start mysql 来代替 launchctl unload ... 行。 这是真的 - 但在撰写此答案时,这些自制命令尚不可用。我会更新答案【参考方案7】:

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

brew list mysql # or: mariadb

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

sudo fs_usage | grep my.cnf

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

【讨论】:

【参考方案8】:

在我的系统中是

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

作为模板和

nano /usr/local/etc/my.cnf

正常工作。

【讨论】:

【参考方案9】:

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

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

对于喜欢将配置保留在二进制文件附近的情况 - 如果缺少my.cnf,请在此处创建。

修改后重启mysql:

brew services restart mysql

【讨论】:

【参考方案10】:

对于 MacOS (High Sierra),使用 home brew 安装的 MySQL。

从 mysql 环境中增加全局变量不成功。所以在这种情况下,创建 ~/.my.cnf 是最安全的选择。使用 [mysqld] 添加变量将包括更改(注意:如果使用 [mysql] 更改,更改可能不起作用)。

[mysqld] connect_timeout = 43200 max_allowed_pa​​cket = 2048M net_buffer_length = 512M

重启mysql服务器。并检查变量。 是的

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

集合中的 1 行(0.00 秒)

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

    $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

    将您的 my.cf 文件放到/usr/local/opt/mysql

    brew services restart mysql

【讨论】:

【参考方案13】:

服务器版本:8.0.19 Homebrew。 macOS Catalina 10.15.5 并通过 Homebrew 安装 MySQL。在这里找到这个文件:

/usr/local/etc/my.cnf

This solution 帮助:)

【讨论】:

【参考方案14】:

运行

sudo find / -name my.cnf

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

/usr/local/etc/

【讨论】:

【参考方案15】:

添加另一个答案原因

接受错误。我们说的是安装了 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

事实上,homebrew 在从源代码编译mysql 期间更改了-DSYSCONFDIR=(默认配置位置)标志。

启动服务

简短回答:运行brew info mysql 并查看提示。

推荐的方式是brew services start mysql,它使用launchd来管理服务。 (launchd 在 macOS 上被视为 systemd 替代品)

对于任何想要手动启动它的人,mysql.start 没有任何选项就足以启动服务。 (mysql.startmysql提供的帮助启动服务的脚本)

【讨论】:

您也可以使用brew services run mysql 来运行服务器,而无需将其设置为自动启动。【参考方案16】:

如果您使用的是 mac m1(Apple 芯片),my.cnf 位于

/opt/homebrew/etc/my.cnf

也可以通过mysql --help找到

【讨论】:

以上是关于对于自制 mysql 安装,my.cnf 在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

[mysql]my.cnf在哪里

mysql的配置文件my.cnf 或者 my.ini在哪啊? 想修改它,怎么修改啊?

linux 用rpm安装完成mysql后怎么进行初始化

macOS 上 my.cnf 文件的位置

MySQL乱码问题

如何找到 MySQL my.cnf 位置