我正在尝试按照本教程启用对 MySQL 的远程访问。问题是,my.cnf
文件应该放在哪里?我正在使用 Mac OS X Lion。
31 回答
默认情况下,OS X 安装不使用 my.cnf,而 MySQL 只使用默认值。要设置您自己的 my.cnf,您可以直接在 /etc 中创建一个文件。
OS X 在/usr/local/mysql/support-files/
.
如果您在那里找不到它们,MySQLWorkbench 可以通过以下方式为您创建它们:
- 打开连接
- 在菜单中的“实例”下选择“选项文件”。
- MySQLWorkbench 将搜索 my.cnf,如果找不到,它会为您创建它
如果是 Mac OS X Maverick,当通过 Homebrew 安装 MySQL 时,它位于/usr/local/opt/mysql/my.cnf
通常,在 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 上还有一种简单的检查方法。
跑:
sudo fs_usage | grep my.cnf
这将实时报告与该文件相关的任何文件系统活动。
在另一个终端中,重新启动您的 MySQL/MariaDB,例如
brew services restart mysql
或者:
brew services restart mariadb
在带有 的终端上
fs_usage
,应显示正确的位置,例如15:52:22 access /usr/local/Cellar/mariadb/10.1.14/my.cnf 0.000002 sh
因此,如果该文件不存在,请创建一个。
我不知道您使用的是哪个版本的 MySQL,但以下是Mac OS X 上5.5 版(取自此处)的 my.cnf 文件的可能位置:
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf
defaults-extra-file
(用 指定的文件--defaults-extra-file=path
,如果有的话)~/.my.cnf
如果您使用的是 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。
对于 Mac OS X El Capitan 上的 MySQL 5.7:/usr/local/mysql/etc/my.cnf
复制默认配置/usr/local/mysql/support-files/my-default.cnf
我正在运行 MacOS Catalina(10.15.3) 并my.cnf
在/usr/local/etc
.
当前适用于 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
根据您的版本调整您的路径。
所以这些东西都不适合我。我正在使用 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>
macOS sierra 10.12.6
MySQL 版本:5.7.18_1
我运行locate my.cnf并且路径是
/usr/local/etc/my.cnf
您可以打开终端并输入locate my.cnf
在我从 Homebrew 安装的 mysql 5.6.22 中,my.cnf 的路径是
/usr/local/opt/mysql/my.cnf
打开终端并使用以下命令:
sudo find / -name my.cnf
你可以检查文件
/usr/local/bin/mysql.server
并查看从哪里my.conf
读取。
通常它来自/etc/my.cnf
or~/my.cnf
或~/.my.cnf
阅读文档!
您正在使用的版本的 MySQL 文档将有所帮助。它通常被描述为Options File
或MySQL Config File
。
文档在文档中有这些文件的位置,以及其他VITAL
信息,例如位置和配置文件必须是什么样子的小示例。
重要笔记:
在 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
or.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:
- https://gist.github.com/search?utf8=%E2%9C%93&q=my.cnf+mysql&ref=searchresults
- https://www.linode.com/community/questions/5749/mysql-sample-config-files
- 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)
对于 MAMP 3.5 Mac El Capitan,创建一个单独的空配置文件并为 mysql 编写附加设置
sudo vim /Applications/MAMP/Library/my.cnf
并像这样添加
[mysqld]
max_allowed_packet = 256M
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
我签入了 macOS Sierra,安装了自制软件MySql 5.7.12
支持文件位于
/usr/local/opt/mysql/support-files
只需复制my-default.cnf
为/etc/my.cnf
or /etc/mysql/my.cnf
,配置将在重新启动时被拾取。
它通常应该/usr/local/etc
在 mac 下,如果你没有找到它,你可以创建一个
/private/etc/my.cnf 用于 Catalina
如果在带有 MacOS Monterey 12.0.1 的 Mac M1 中使用 Homebrew 安装 MySQL,则位置为 /opt/homebrew/etc/my.cnf
我在 macOS High Sierra 版本 10.13.3 中使用 mysql 版本 5.7.17,我在这里找到了 mysql 配置文件。
cd /usr/local/mysql/support-files/my-default.cnf
对于mysql 8.0.19,我终于在这里找到了my.cnf:/usr/local/opt/mysql/.bottle/etc 我把它复制到/usr/local/opt/mysql/ 并修改了它。然后我重新启动mysql服务,它可以工作。
对于 Mac ,对我有用的是在我的 ~ 路径中创建一个 .my.cnf 文件。希望这可以帮助。
复制 /usr/local/opt/mysql/support-files/my-default.cnf 为 /etc/my.cnf 或 /etc/mysql/my.cnf 然后重启 mysql。
对我来说,塞拉版本
复制默认配置:
/usr/local/Cellar/mysql/5.6.27/support-files/my-default.cnf
到
/usr/local/Cellar/mysql/5.6.27/my.cnf
就我而言,该文件不存在。在 MySQL Workbench 中,我转到 OPTIONS FILE 并找到了一些默认值。我点击了应用。它请求许可。然后它在 /etc 下创建了 my.cnf 文件。但是,请务必记住,第一次单击“应用”时,您不会对默认配置进行任何更改。创建文件后,您可以进行更改,单击“应用”时将应用这些更改。否则,当您进行更改时,您将不会看到应用按钮。
MySQL 5.7.18 版本之后,不再提供support-files 目录下的默认配置文件。所以你可以在 MySQL 将读取的位置手动创建 my.cnf 文件,例如 /etc/mysql/my.cnf,并在文件中添加你想要添加的配置。
r默认选项按给定顺序从以下文件中读取: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
我正在运行 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 设置。