my.cnf文件在macOS上的位置


185

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


我认为这属于serverfault.com。但是,仍然欢迎您!
Artefact2 2012年

Answers:


251

MySQL论坛上的该线程说:

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

OS X在提供了示例配置文件/usr/local/mysql/support-files/

而且,如果您在这里找不到它们,MySQLWorkbench可以通过以下方法为您创建它们:

  1. 打开连接
  2. 在菜单的“ INSTANCE”下选择“ Options File”。
  3. MySQLWorkbench将搜索my.cnf,如果找不到,它将为您创建

14
实际上,至少当前Mac OS X的MySQL软件包(在撰写本文时为mysql-5.6.17-osx10.7-x86_64)确实创建并使用了my.cnf。它位于/usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy,2014年

103
您可能需要确保mysql实际my.cnf通过以下方式在正在编辑的文件中加载mysql --verbose --help | grep my.cnf
ryantuck

3
在Mac OS Sierra上,尚未设置。我必须将/usr/local/mysql/support-files/my-default.cnf复制到同一目录中的my.cnf。请注意,mysql与程序包符号链接,在本例中为mysql-5.7.17-macos10.12-x86_64。
Christia

17
刚刚使用dev.mysql.com的.dmg在Mac OS 10.12上进行了MySQL 5.7.19的全新安装。在mysql --help指出的任何位置都没有my.cnf。在/ usr / local / mysql / support-files /或我找到的其他任何地方都没有my-default.cnf。原来是“自MySQL 5.7.18起,my-default.cnf不再包含在分发包中或由分发包安装”
克里斯·巴特利

2
这个答案很旧,取决于您用来安装mysql的安装程序。自制软件放在一个地方,dmg安装程序放在另一个地方
slashdottir

77

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


6
这是/usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5

/ usr / local / opt / mariadb / VERSIONNUMBER /在我的情况下,MariaDB已安装
Steven Lizarazo

8
我的位置在/usr/local/etc/my.cnf
Steve Tauber,2015年

1
我的是/usr/local/mysql/etc。我在High Sierra上,但是安装了几个版本。
约书亚·品特

您是
救生员

56

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

  • /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          

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


6
谢谢!该 sudo fs_usage | grep my.cnf方法非常有效。我在以下文件夹中找到此文件:/usr/local/etc/my.cnf
gary 18'1 May

2
伟大的方法,但是我得到几个结果有:private/etc/my.cnf/usr/local/etc/my.cnf/usr/local/Cellar/mysql/<myVersion>/my.cnf~.my.cnfmy_print_def在最右边的列。然后过了一会儿,只有/usr/local/etc/my.cnf我的终端在最右边的列中。但是所有这些my.cnf文件都不存在!
安德鲁(Andru)

@Andru如果都不存在,请创建一个新的。
kenorb

1
您的最后一组指令是sudo fs_usage | grep my.cnf是此页面上唯一帮助我的东西,因为某些未知原因,mysqld并未从通过mysql列出的默认位置中加载-?
redbirdo

1
该命令sudo fs_usage | grep my.cnf挽救了我的生活,谢谢一百万。
Shashikant Soni

33

我不知道您使用的是哪个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

21

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

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


4
为了清楚起见,您必须自己创建“ etc /”文件夹,并且需要该“ sudo su-”的root用户特权
trojan

在那个位置找不到我。我正在使用MAMP
Mirza Vu


21

如果您使用的是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,瞧,你很好。快乐编码



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>

大!你救了我的一天。
jenny

我也有同样的情况,但我还必须将my.cnf文件添加到/etc/my.cnf
Eduard Mukans,

11

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


抱歉,不够具体,我显然需要将“ my-large.cnf”复制到某个文件夹并将其重命名为“ my.cnf”。但我不知道去哪儿..
尼古拉斯·

1
另外,您确实需要拥有一个填充的locate db。在Mac OS X上:sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
arcseldon 2014年

10

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

/usr/local/opt/mysql/my.cnf 

10

macOs sierra 10.12.6 mysql版本:5.7.18_1我运行找到my.cnf,路径为

/usr/local/etc/my.cnf

希望对您有所帮助。


考虑添加解释你的asnwer
因德尔

@ charles.cc.hsu:尝试locate my.cnf在终端上使用命令。结果如何?
aginanjar

6

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

在此处输入图片说明



5

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

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

并像这样添加

[mysqld]
max_allowed_packet = 256M

5

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

sudo find / -name my.cnf

4

阅读DOCS!

您正在使用哪个版本的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上,此伪指令检查带有.ini.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

没有与该网址的从属/关联

我的系统:

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)

mysql-帮助| grep“默认选项” -A 1。这有所帮助。
wandermonk

3

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


2

我检查了安装了自制软件的macOS Sierra MySql 5.7.12

支持文件位于

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

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


4
我刚刚通过自制软件在12.12.4上安装了5.7.18,但它们不存在。
norman_h 17-4-29

2

macOS High Sierra版本10.13.6

使用EditLine包装器的osx10.13(x86_64)的mysql Ver 14.14 Distrib 5.7.22,版权所有(c)2000、2018,Oracle和/或其分支机构。版权所有

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

/etc/my.cnf 
/etc/mysql/my.cnf 
/usr/local/etc/my.cnf 
~/.my.cnf


1

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

cd /usr/local/mysql/support-files/my-default.cnf

感谢您提供有关查找默认配置文件的提示。请注意,这只是一个模板文件,因此您需要将其复制到mysql --verbose --help | grep my.cnf将被拾取的位置,如下所示:DO NOT EDIT THIS FILE. It's a template which will be copied to the default location during install, and will be replaced if you upgrade to a newer version of MySQL.
Joshua Pinter

1

/usr/local/etc如果您找不到它,它通常应该在Mac上,您可以创建一个


0

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


0

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


0

对我来说是塞拉利昂版

在以下位置复制默认配置:

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

/ usr / local /地窖/mysql/5.6.27/my.cnf


0

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


我有一个选项文件,/etc/mysql/my.cnf但MySQL Workbench不知道。相反,它抱怨找不到具有空路径的配置文件,然后提议创建一个新文件。
艾伦·斯奈德

0

在5.7.18版本的MySQL之后,它在support-files目录中不提供默认配置文件。因此,您可以在MySQL可以读取的位置(例如/etc/mysql/my.cnf)手动创建my.cnf文件,并在文件中添加要添加的配置。


0

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


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设置。


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.