簡體   English   中英

macOS 上 my.cnf 文件的位置

[英]Location of my.cnf file on macOS

我正在嘗試按照本教程啟用對 MySQL 的遠程訪問。 問題是, my.cnf文件應該放在哪里? 我正在使用 Mac OS X Lion。

MySQL論壇上的這個帖子說:

默認情況下,OS X 安裝不使用 my.cnf,而 MySQL 只使用默認值。 要設置您自己的 my.cnf,您可以直接在 /etc 中創建一個文件。

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

如果您在那里找不到它們,MySQLWorkbench 可以通過以下方式為您創建它們:

  1. 打開連接
  2. 選擇菜單中“實例”下的“選項文件”。
  3. MySQLWorkbench 將搜索 my.cnf,如果找不到,它會為您創建

對於 Mac OS X Maverick,當 MySQL 通過 Homebrew 安裝時,它位於/usr/local/opt/mysql/my.cnf

通常,在 Unix 和類 Unix 系統上,MySQL/MariaDB 程序讀取以下位置的配置/啟動文件(按指定順序):

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

    SYSCONFDIR表示在構建 MySQL 時使用CMakeSYSCONFDIR選項指定的目錄。 默認情況下,這是位於編譯安裝目錄下的 etc 目錄。

  • $MYSQL_HOME/my.cnf - 服務器特定(僅限服務器)

    MYSQL_HOME是一個環境變量,包含特定於服務器的my.cnf文件所在目錄的路徑。 如果未設置MYSQL_HOME並且您使用mysqld_safe程序啟動服務器,則mysqld_safe會將其設置為BASEDIR ,即 MySQL 基本安裝目錄。

  • 使用--defaults-extra-file=path指定--defaults-extra-file=path如果有)

  • ~/.my.cnf - 特定於用戶的
  • ~/.mylogin.cnf - 特定於用戶的(僅限客戶端)

來源:使用選項文件

注意:在 Unix 平台上,MySQL 會忽略全局可寫的配置文件。 這是有意作為一種安全措施。


此外,在 Mac 上有一個簡單的方法來檢查它。

  1. 運行: sudo fs_usage | grep my.cnf 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

    因此,如果該文件不存在,請創建一個。

我不知道您使用的是哪個版本的 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指定--defaults-extra-file=path ,如果有的話)
  6. ~/.my.cnf

如果您使用的是 macOS Sierra 並且該文件不存在,請運行

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

查看 my.cnf for mysql 的可能位置和加載/讀取順序,然后在建議的目錄之一中創建 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復制默認配置

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
根據您的版本調整您的路徑。

我正在運行 MacOS Catalina(10.15.3) 並在/usr/local/etc找到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>

您可以打開終端並輸入locate my.cnf

在我從 Homebrew 安裝的 mysql 5.6.22 中,my.cnf 的路徑是

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

macOs sierra 10.12.6 mysql version : 5.7.18_1 我運行locate my.cnf ,路徑是

/usr/local/etc/my.cnf

希望它有所幫助。

打開終端並使用以下命令:

sudo find / -name my.cnf

您可以在任何您想要的目錄下創建您的文件。 創建后,您可以“告訴”mysql 配置的路徑:

在此處輸入圖片說明

你可以檢查文件

/usr/local/bin/mysql.server並查看從哪里讀取my.conf

通常它來自/etc/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 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

與 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)

macOS High Sierra 版本 10.13.6

mysql Ver 14.14 Distrib 5.7.22,用於使用 EditLine 包裝器的 osx10.13 (x86_64) 版權所有 (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/etc/mysql/my.cnf在重新啟動時獲取配置。

它通常應該在 mac 上的/usr/local/etc ,如果你沒有找到它,你可以創建一個

Catalina 的 /private/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。

對於 sierra 版本的我

復制默認配置:

/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 設置。

如果在 Mac M1 和 MacOS Monterey 12.0.1 中安裝帶有 Homebrew 的 MySQL,位置是 /opt/homebrew/etc/my.cnf

替代所有這些偉大的答案。 如果您在沒有 sudo 訪問權限的環境中工作。 您的 Homebrew 可能已安裝在您的主目錄中~如果是這種情況並且您的 mysql 已通過brew install mysql安裝,您的 my.cnf 可能位於~/homebrew/etc/my.cnf或者您可以在其中搜索它你的家find ./ -name 'my.cnf'

一種快速了解 MAC OS 的方法如下:

sudo find /usr/ -type f -iname "*my.cnf*"

或者

brew list mysql@5.7 |grep -i my.cnf

問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM