Answers:
默认情况下,OS X安装不使用my.cnf,而MySQL仅使用默认值。要设置自己的my.cnf,您可以直接在/ etc中创建一个文件。
OS X在提供了示例配置文件/usr/local/mysql/support-files/
。
而且,如果您在这里找不到它们,MySQLWorkbench可以通过以下方法为您创建它们:
my.cnf
通过以下方式在正在编辑的文件中加载mysql --verbose --help | grep my.cnf
如果是Mac OS X Maverick,则通过Homebrew安装MySQL时,它位于 /usr/local/opt/mysql/my.cnf
/usr/local/mysql/etc
。我在High Sierra上,但是安装了几个版本。
通常,在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上,有一种简单的检查方法。
跑: 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
因此,如果文件不存在,请创建一个。
sudo fs_usage | grep my.cnf
方法非常有效。我在以下文件夹中找到此文件:/usr/local/etc/my.cnf
private/etc/my.cnf
,/usr/local/etc/my.cnf
,/usr/local/Cellar/mysql/<myVersion>/my.cnf
,~.my.cnf
用my_print_def
在最右边的列。然后过了一会儿,只有/usr/local/etc/my.cnf
我的终端在最右边的列中。但是所有这些my.cnf
文件都不存在!
对于Mac OS X El Capitan上的MySQL 5.7: /usr/local/mysql/etc/my.cnf
从复制默认配置 /usr/local/mysql/support-files/my-default.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 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>
/etc/my.cnf
您可以打开一个终端并输入 locate my.cnf
您可以检查文件
/usr/local/bin/mysql.server
并从哪里my.conf
读取。
通常是来自/etc/my.cnf
或~/my.cnf
或~/.my.cnf
~/.my.cnf
。在文件名之前添加一个点。
对于MAMP 3.5 Mac El Capitan,创建一个单独的空配置文件并为mysql编写其他设置
sudo vim /Applications/MAMP/Library/my.cnf
并像这样添加
[mysqld]
max_allowed_packet = 256M
您正在使用哪个版本的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
或.cnf
扩展名的文件。
如何找到配置或日志文件位置的示例等:
这不会显示配置文件,但会帮助您找到安装文件/文件夹。
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:
没有与该网址的从属/关联
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)
我检查了安装了自制软件的macOS Sierra MySql 5.7.12
支持文件位于
/usr/local/opt/mysql/support-files
只需复制my-default.cnf
为/etc/my.cnf
或/etc/mysql/my.cnf
,配置将在重新启动时获取。
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
我在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.
就我而言,该文件不存在。在MySQL Workbench中,我转到了OPTIONS FILE并找到了一些默认值。我点击申请。它要求获得许可。然后,它在/ etc下创建了my.cnf文件。但是,请务必记住,第一次单击“应用”时,请勿对默认配置进行任何更改。创建文件后,您可以进行更改,然后单击“应用”将应用更改。否则,进行更改时将不会显示“应用”按钮。
/etc/mysql/my.cnf
但MySQL Workbench不知道。相反,它抱怨找不到具有空路径的配置文件,然后提议创建一个新文件。
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设置。