216

我正在尝试按照本教程启用对 MySQL 的远程访问。问题是,my.cnf文件应该放在哪里?我正在使用 Mac OS X Lion。

4

31 回答 31

262

MySQL论坛上的这个帖子说:

默认情况下,OS X 安装不使用 my.cnf,而 MySQL 只使用默认值。要设置您自己的 my.cnf,您可以直接在 /etc 中创建一个文件。

OS X 在/usr/local/mysql/support-files/.

如果您在那里找不到它们,MySQLWorkbench 可以通过以下方式为您创建它们:

  1. 打开连接
  2. 在菜单中的“实例”下选择“选项文件”。
  3. MySQLWorkbench 将搜索 my.cnf,如果找不到,它会为您创建它
于 2012-05-25T15:32:44.327 回答
86

如果是 Mac OS X Maverick,当通过 Homebrew 安装 MySQL 时,它位于/usr/local/opt/mysql/my.cnf

于 2014-06-16T19:25:22.817 回答
72

通常,在 Unix 和类 Unix 系统上,MySQL/MariaDB 程序读取以下位置的配置/启动文件(按指定顺序):

  • /etc/my.cnf- 全球的
  • /etc/mysql/my.cnf- 全球的
  • SYSCONFDIR/my.cnf- 全球的

    SYSCONFDIR表示在构建 MySQL 时使用SYSCONFDIR选项指定的目录。CMake默认情况下,这是位于编译安装目录下的 etc 目录。

  • $MYSQL_HOME/my.cnf- 服务器特定(仅限服务器)

    MYSQL_HOME是一个环境变量,包含服务器特定my.cnf文件所在目录的路径。如果MYSQL_HOME未设置并且您使用该mysqld_safe程序启动服务器,mysqld_safe请将其设置BASEDIR为 MySQL 基本安装目录。

  • 指定的文件(--defaults-extra-file=path如果有)

  • ~/.my.cnf- 用户特定
  • ~/.mylogin.cnf- 用户特定(仅限客户)

来源:使用选项文件

注意:在 Unix 平台上,MySQL 会忽略全局可写的配置文件。这是有意作为一种安全措施。


此外,在 Mac 上还有一种简单的检查方法。

  1. 跑:sudo fs_usage | grep my.cnf

    这将实时报告与该文件相关的任何文件系统活动。

  2. 在另一个终端中,重新启动您的 MySQL/MariaDB,例如

    brew services restart mysql
    

    或者:

    brew services restart mariadb
    
  3. 在带有 的终端上fs_usage,应显示正确的位置,例如

    15:52:22  access            /usr/local/Cellar/mariadb/10.1.14/my.cnf                                         0.000002   sh          
    

    因此,如果该文件不存在,请创建一个。

于 2016-06-09T14:57:29.040 回答
34

我不知道您使用的是哪个版本的 MySQL,但以下是Mac OS X 上5.5 版(取自此处)的 my.cnf 文件的可能位置:

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. SYSCONFDIR/my.cnf
  4. $MYSQL_HOME/my.cnf
  5. defaults-extra-file(用 指定的文件--defaults-extra-file=path,如果有的话)
  6. ~/.my.cnf
于 2012-05-25T15:35:37.477 回答
30

如果您使用的是 macOS Sierra 并且该文件不存在,请运行

mysql --help or mysql --help | grep my.cnf

要查看 mysql 的 my.cnf 的可能位置和加载/读取顺序,然后在建议的目录之一中创建 my.cnf 文件,然后添加以下行

[mysqld] sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

然后,您可以sudo touch /{preferred-path}/my.cnf编辑文件以添加 sql 模式

sudo nano /{preferred-path}/my.cnf

然后重启 MySQL。

于 2018-02-28T16:55:35.540 回答
21

对于 Mac OS X El Capitan 上的 MySQL 5.7:/usr/local/mysql/etc/my.cnf

复制默认配置/usr/local/mysql/support-files/my-default.cnf

于 2015-12-31T14:30:31.987 回答
17

我正在运行 MacOS Catalina(10.15.3) 并my.cnf/usr/local/etc.

于 2020-04-25T08:40:32.203 回答
15

当前适用于 Mac OS X Mavericks的MySQL 包(撰写本文时为 mysql-5.6.17-osx10.7-x86_64)在安装期间自动创建一个 my.cnf。

它位于/usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
根据您的版本调整您的路径。

于 2014-05-20T09:08:09.727 回答
12

所以这些东西都不适合我。我正在使用 mysql 社区服务器的当前 dmg 安装。ps 显示通常在 my.cnf 中的所有最关键参数都在命令行上传递,我无法弄清楚它来自哪里。在对我的盒子进行全文搜索后,我在以下位置找到了它:

/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

所以你可以在那里改变它们,或者把它们取出来,这样它就会真正尊重你在 my.cnf 中的那些,无论你决定把它放在哪里。

享受!

在该文件中找到的文件信息示例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--user=_mysql</string>
            <string>--basedir=/usr/local/mysql</string>
            <string>--datadir=/usr/local/mysql/data</string>
            <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
            <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
             <string>--keyring-file-data=/usr/local/mysql/keyring/keyring</string>
             <string>--early-plugin-load=keyring_file=keyring_file.so</string>

        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>
于 2015-08-28T19:05:56.443 回答
12

macOS sierra 10.12.6
MySQL 版本:5.7.18_1
我运行locate my.cnf并且路径是

/usr/local/etc/my.cnf

于 2018-08-07T15:55:50.707 回答
11

您可以打开终端并输入locate my.cnf

于 2012-05-25T15:31:40.133 回答
11

在我从 Homebrew 安装的 mysql 5.6.22 中,my.cnf 的路径是

/usr/local/opt/mysql/my.cnf 
于 2015-05-03T07:42:16.627 回答
10

打开终端并使用以下命令:

sudo find / -name my.cnf
于 2018-11-16T05:19:02.967 回答
9

您可以在所需的任何目录下创建文件。创建后,您可以“告诉”mysql config 的路径:

在此处输入图像描述

于 2019-01-01T10:18:01.547 回答
7

你可以检查文件

/usr/local/bin/mysql.server并查看从哪里my.conf读取。

通常它来自/etc/my.cnfor~/my.cnf~/.my.cnf

于 2016-07-25T08:38:31.583 回答
6

阅读文档!

您正在使用的版本的 MySQL 文档将有所帮助。它通常被描述为Options FileMySQL Config File
文档在文档中有这些文件的位置,以及其他VITAL信息,例如位置和配置文件必须是什么样子的小示例。

MySQL 版本 8

MySQL 5.7 版

MySQL 5.6 版

MySQL 5.5 版

MySQL 5.6 版日语

重要笔记:

在 Unix 平台上,MySQL 忽略全局可写的配置文件。

这是有意作为一种安全措施。

换句话说,如果您在配置文件上设置了错误的权限,则不会加载。

配置文件之一的初始设置权限示例:

RIZZOMBP$ ls -lah /etc/my.cnf
-rw-r--r--  1 myusername  wheel     0B Feb 25 20:40 /etc/my.cnf

笔记:

可以!include在选项文件中使用指令来包含其他选项文件并!includedir在特定目录中搜​​索选项文件.....

... MySQL 不保证目录中选项文件的读取顺序...

在 Unix 操作系统上使用 !includedir 指令查找和包含的任何文件都必须具有以 . 结尾的文件名.cnf。在 Windows 上,该指令检查带有.inior.cnf扩展名的文件。

如何查找配置或日志文件等位置的示例:

SQL

这不会向您显示配置文件,但会帮助您找到安装文件/文件夹。

MySQL 版本 5.7 和 8+

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

MySQL 版本 <= 5.6

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

外壳/终端

RIZZOMBP$ mysql --help | grep "Default options" -A 1

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

以上命令归功于:来自 ServerFault 的Erwin Mayer

RIZZOMBP$ mysqld --verbose --help | grep '/my.cnf' -B 1

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

或者

RIZZOMBP$ ps aux | grep -i mysqld | grep -v $USER

_mysql 106 0.4 2.5 4232336 422112 ?? Ss 7:01PM 0:57.12
/usr/local/mysql/bin/mysqld
--user=_mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
--plugin-dir=/usr/local/mysql/lib/plugin
--log-error=/usr/local/mysql/data/mysqld.local.err
--pid-file=/usr/local/mysql/data/mysqld.local.pid
--keyring-file-data=/usr/local/mysql/keyring/keyring
--early-plugin-load=keyring_file=keyring_file.so

示例文件

如果您需要详细的参考示例 my.cnf:

  1. https://gist.github.com/search?utf8=%E2%9C%93&q=my.cnf+mysql&ref=searchresults
  2. https://www.linode.com/community/questions/5749/mysql-sample-config-files
  3. https://www.fromdual.com/mysql-configuration-file-sample

与 URL 没有从属关系/关联

我的系统:

RIZZOMBP$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.3
BuildVersion:   18D109
RIZZOMBP$ mysql -V
mysql  Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)
RIZZOMBP$ mysqld -V
/usr/local/mysql-8.0.15-macos10.14-x86_64/bin/mysqld 
Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)
于 2019-02-26T06:26:43.470 回答
5

对于 MAMP 3.5 Mac El Capitan,创建一个单独的空配置文件并为 mysql 编写附加设置

sudo vim /Applications/MAMP/Library/my.cnf

并像这样添加

[mysqld]
max_allowed_packet = 256M
于 2016-10-18T17:55:42.847 回答
3

macOS High Sierra 版本 10.13.6

mysql Ver 14.14 Distrib 5.7.22,适用于 osx10.13 (x86_64),使用 EditLine 包装器 版权所有 (c) 2000, 2018,Oracle 和/或其附属公司。版权所有

默认选项按给定顺序从以下文件中读取:

/etc/my.cnf 
/etc/mysql/my.cnf 
/usr/local/etc/my.cnf 
~/.my.cnf
于 2018-07-29T12:11:17.157 回答
2

我签入了 macOS Sierra,安装了自制软件MySql 5.7.12

支持文件位于

/usr/local/opt/mysql/support-files

只需复制my-default.cnf/etc/my.cnfor /etc/mysql/my.cnf,配置将在重新启动时被拾取。

于 2017-04-26T09:47:50.293 回答
2

它通常应该/usr/local/etc在 mac 下,如果你没有找到它,你可以创建一个

于 2019-02-01T23:10:31.883 回答
2

/private/etc/my.cnf 用于 Catalina

于 2019-11-21T18:18:14.710 回答
2

如果在带有 MacOS Monterey 12.0.1 的 Mac M1 中使用 Homebrew 安装 MySQL,则位置为 /opt/homebrew/etc/my.cnf

于 2021-11-29T08:23:29.233 回答
1

我在 macOS High Sierra 版本 10.13.3 中使用 mysql 版本 5.7.17,我在这里找到了 mysql 配置文件。

cd /usr/local/mysql/support-files/my-default.cnf
于 2018-05-08T05:14:34.507 回答
1

对于mysql 8.0.19,我终于在这里找到了my.cnf:/usr/local/opt/mysql/.bottle/etc 我把它复制到/usr/local/opt/mysql/ 并修改了它。然后我重新启动mysql服务,它可以工作。

于 2020-05-19T22:03:49.243 回答
0

对于 Mac ,对我有用的是在我的 ~ 路径中创建一个 .my.cnf 文件。希望这可以帮助。

于 2016-05-26T09:08:17.893 回答
0

复制 /usr/local/opt/mysql/support-files/my-default.cnf 为 /etc/my.cnf 或 /etc/mysql/my.cnf 然后重启 mysql。

于 2017-06-09T08:57:17.783 回答
0

对我来说,塞拉版本

复制默认配置:

/usr/local/Cellar/mysql/5.6.27/support-files/my-default.cnf

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

于 2017-07-13T02:50:35.860 回答
0

就我而言,该文件不存在。在 MySQL Workbench 中,我转到 OPTIONS FILE 并找到了一些默认值。我点击了应用。它请求许可。然后它在 /etc 下创建了 my.cnf 文件。但是,请务必记住,第一次单击“应用”时,您不会对默认配置进行任何更改。创建文件后,您可以进行更改,单击“应用”时将应用这些更改。否则,当您进行更改时,您将不会看到应用按钮。

于 2018-02-13T15:00:37.370 回答
0

MySQL 5.7.18 版本之后,不再提供support-files 目录下的默认配置文件。所以你可以在 MySQL 将读取的位置手动创建 my.cnf 文件,例如 /etc/mysql/my.cnf,并在文件中添加你想要添加的配置。

于 2018-04-09T09:20:13.863 回答
0

r默认选项按给定顺序从以下文件中读取: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

于 2018-06-05T15:57:11.307 回答
0

我正在运行 MacOS Mojave (10.14.6) 并让 MySQL 识别我的配置文件,我必须将它放在 /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf 中。我还有一个从 /usr/local/@mysql/etc/my.cnf 指向它的符号链接。

我试图关闭 sql_mode=only_full_group_by 并在配置文件中设置该选项是我可以让设置在会话中持续存在的唯一方法。配置文件的内容是:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

我正在使用 MySQL 的本机安装,而不是 Homebrew 设置。

于 2020-02-23T14:50:17.660 回答