Vị trí của tệp my.cnf trên macOS


184

Tôi đang cố gắng làm theo hướng dẫn này để cho phép truy cập từ xa vào MySQL. Vấn đề là, my.cnftập tin nên được đặt ở đâu? Tôi đang sử dụng Mac OS X Lion.


Tôi nghĩ rằng điều này thuộc về serverfault.com. Nhưng vẫn vậy, chào mừng bạn đến với SO!
Artefact2

Câu trả lời:


251

Chủ đề này trên diễn đàn MySQL nói:

Theo mặc định, cài đặt OS X không sử dụng my.cnf và MySQL chỉ sử dụng các giá trị mặc định. Để thiết lập my.cnf của riêng bạn, bạn chỉ cần tạo một tệp thẳng trong / etc.

OS X cung cấp các tệp cấu hình ví dụ tại /usr/local/mysql/support-files/.

Và nếu bạn không thể tìm thấy chúng ở đó, MySQLWorkbench có thể tạo chúng cho bạn bằng cách:

  1. Mở một kết nối
  2. Chọn 'Tệp tùy chọn' trong 'INSTANCE' trong menu.
  3. MySQLWorkbench sẽ tìm kiếm my.cnf và nếu không thể tìm thấy nó, nó sẽ tạo ra nó cho bạn

14
Ít nhất là gói MySQL hiện tại dành cho Mac OS X (mysql-5.6.17-osx10.7-x86_64 tại thời điểm viết bài này) thực hiện trên thực tế tạo ra và sử dụng một my.cnf. Nó được đặt tại /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy

102
bạn có thể muốn đảm bảo rằng mysql thực sự đang tải trong bất kỳ my.cnftệp nào bạn đang chỉnh sửa quamysql --verbose --help | grep my.cnf
ryantuck 22/2/2016

3
Trên Mac OS Sierra, nó chưa được thiết lập. Tôi đã phải sao chép /usr/local/mysql/support-files/my-default.cnf vào my.cnf trong cùng một thư mục. Lưu ý rằng mysql được liên kết với gói, trong trường hợp của tôi là mysql-5.7.17-macos10.12-x86_64.
Christia

17
Chỉ cần cài đặt sạch MySQL 5.7.19 trên Mac OS 10.12 bằng cách sử dụng .dmg từ dev.mysql.com. Không có my.cnf ở bất kỳ nơi nào mà mysql --help nói rằng nó tìm thấy. Và không có my-default.cnf trong / usr / local / mysql / support-files / hoặc bất cứ nơi nào khác tôi tìm thấy. Hóa ra "kể từ MySQL 5.7.18, my-default.cnf không còn được bao gồm trong hoặc cài đặt bởi các gói phân phối" .
Chris Bartley

2
Câu trả lời này đã cũ và phụ thuộc vào trình cài đặt bạn đã sử dụng để cài đặt mysql. Homebrew đặt nó ở một nơi, trình cài đặt dmg đặt nó ở vị trí khác
slashdottir

77

Trong trường hợp Mac OS X Maverick khi MySQL được cài đặt qua Homebrew, nó được đặt tại /usr/local/opt/mysql/my.cnf


6
đó là /usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5

/ usr / local / opt / mariadb / VERSIONNUMBER / trong trường hợp của tôi MariaDB đã được cài đặt
Steven Lizarazo

8
Của tôi là trong /usr/local/etc/my.cnf
Steve Tauber

1
Mine là /usr/local/mysql/etc. Tôi đang ở High Sierra nhưng nó đã được cài đặt một vài phiên bản.
Joshua Pinter

bạn là một người cứu
rỗi

56

Nói chung, trên các hệ thống tương tự Unix và Unix, các chương trình MySQL / MariaDB đọc các tệp cấu hình / khởi động ở các vị trí sau (theo thứ tự được chỉ định):

  • /etc/my.cnf - Toàn cầu
  • /etc/mysql/my.cnf - Toàn cầu
  • SYSCONFDIR/my.cnf - Toàn cầu

    SYSCONFDIRđại diện cho thư mục được chỉ định với SYSCONFDIRtùy chọn CMakekhi MySQL được xây dựng. Theo mặc định, đây là thư mục vv nằm trong thư mục cài đặt được biên dịch.

  • $MYSQL_HOME/my.cnf - Máy chủ dành riêng (chỉ dành cho máy chủ)

    MYSQL_HOMElà một biến môi trường chứa đường dẫn đến thư mục chứa my.cnftệp cụ thể của máy chủ . Nếu MYSQL_HOMEkhông được đặt và bạn khởi động máy chủ bằng mysqld_safechương trình, hãy mysqld_safeđặt nó vào BASEDIRthư mục cài đặt cơ sở MySQL.

  • tập tin được chỉ định với --defaults-extra-file=pathnếu có

  • ~/.my.cnf - Người dùng cụ thể
  • ~/.mylogin.cnf - Cụ thể của người dùng (chỉ dành cho khách hàng)

Nguồn: Sử dụng tập tin tùy chọn .

Lưu ý: Trên nền tảng Unix, MySQL bỏ qua các tệp cấu hình có thể ghi trên thế giới. Đây là cố ý như một biện pháp an ninh.


Ngoài ra, trên Mac có một cách đơn giản để kiểm tra nó.

  1. Chạy: sudo fs_usage | grep my.cnf

    Điều này sẽ báo cáo bất kỳ hoạt động hệ thống tập tin trong thời gian thực liên quan đến tập tin đó.

  2. Trong một Terminal khác, khởi động lại MySQL / MariaDB của bạn, vd

    brew services restart mysql

    hoặc là:

    brew services restart mariadb
  3. Trên thiết bị đầu cuối với fs_usage, vị trí thích hợp sẽ được hiển thị, ví dụ

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

    Vì vậy, nếu tập tin không tồn tại, tạo một.


6
Cảm ơn! các sudo fs_usage | grep my.cnfphương pháp khá hiệu quả. Tôi tìm thấy tệp này trên thư mục: /usr/local/etc/my.cnf
gary

2
Lớn phương pháp, tuy nhiên tôi nhận được một số kết quả có: private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfvới my_print_defở bên phải nhất cột. Sau một thời gian, nó chỉ /usr/local/etc/my.cnfvới thiết bị đầu cuối của tôi ở cột ngoài cùng bên phải. Nhưng tất cả các my.cnftập tin này không tồn tại!
Andru

@Andru Nếu không có cái nào tồn tại, hãy tạo cái mới.
kenorb

1
Bộ hướng dẫn cuối cùng của bạn re sudo fs_usage | grep my.cnf là điều duy nhất giúp tôi trên trang này, vì một số lý do không rõ, mysqld không tải từ các vị trí mặc định được liệt kê qua mysql -?
redbirdo

1
Lệnh đó sudo fs_usage | grep my.cnf đã cứu ngày của tôi, Cảm ơn một triệu.
Shashikant Soni

33

Tôi không biết phiên bản MySQL nào bạn đang sử dụng, nhưng đây là các vị trí có thể có của tệp my.cnf cho phiên bản 5.5 (được lấy từ đây ) trên Mac OS X:

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. SYSCONFDIR/my.cnf
  4. $MYSQL_HOME/my.cnf
  5. defaults-extra-file(tệp được chỉ định với --defaults-extra-file=path, nếu có)
  6. ~/.my.cnf

21

Đối với MySQL 5.7 trên Mac OS X El Capitan: /usr/local/mysql/etc/my.cnf

Sao chép conf mặc định từ /usr/local/mysql/support-files/my-default.cnf


4
Để rõ ràng, bạn phải tự tạo thư mục "etc /" và bạn cần có quyền root cho "sudo su -"
trojan

Không tìm thấy ở vị trí đó cho tôi. Tôi đang sử dụng MAMP
Mirza Vu

@mirzavu, xem liên kết này: stackoverflow.com/questions/678645/
Sergio

21

Nếu bạn đang sử dụng macOS Sierra và tệp không tồn tại, hãy chạy

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

để xem các vị trí có thể và trình tự tải / đọc của my.cnf cho mysql, sau đó tạo tệp my.cnf trong một trong các thư mục được đề xuất, sau đó thêm dòng sau

[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.cnfSau đó, bạn có thể chỉnh sửa tệp để thêm chế độ sql bằng cách

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

Sau đó khởi động lại mysql, voilaah bạn tốt để đi. mã hóa hạnh phúc


13

Các gói MySQL hiện tại dành cho Mac OS X Mavericks (mysql-5.6.17-osx10.7-x86_64 tại thời điểm viết bài này) tự động tạo một my.cnf trong khi cài đặt.

Nó được đặt tại /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Thích ứng đường dẫn của bạn theo phiên bản của bạn.


12

Vì vậy, không có những điều này làm việc cho tôi. Tôi đang sử dụng cài đặt dmg hiện tại của máy chủ cộng đồng mysql. ps cho thấy rằng tất cả các tham số quan trọng nhất thông thường trong my.cnf đều được truyền vào dòng lệnh và tôi không thể tìm ra nơi đó đến từ đâu. Sau khi thực hiện tìm kiếm toàn văn bản trong hộp của tôi, tôi tìm thấy nó trong:

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

Vì vậy, bạn có thể thay đổi chúng ở đó hoặc đưa chúng ra ngoài để nó thực sự tôn trọng những gì bạn có trong my.cnf của bạn bất cứ nơi nào bạn quyết định đặt nó.

Thưởng thức!

Ví dụ về thông tin tệp được tìm thấy trong tệp đó:

<?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>

tuyệt quá! bạn đã cứu ngày của tôi
jenny

Tôi cũng gặp trường hợp tương tự, nhưng tôi cũng phải thêm tập tin my.cnf vào/etc/my.cnf
Eduard Mukans

11

Bạn có thể mở một thiết bị đầu cuối và gõ locate my.cnf


Xin lỗi vì không đủ cụ thể, rõ ràng tôi cần phải sao chép 'my-Large.cnf' vào một thư mục nào đó và đổi tên thành 'my.cnf'. Nhưng tôi không biết đến đâu ..
nicolas

1
Ngoài ra, bạn cần phải có một db xác định vị trí dân cư. trên mac osx: sudo launchctl tải -w
System / L Library / LaunchDaemons / com.apple.locate.plist

10

Trong mysql 5.6.22, mà tôi đã cài đặt nó từ Homebrew, đường dẫn của my.cnf là

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

10

macOs sierra 10.12.6 phiên bản mysql: 5.7.18_1 Tôi chạy định vị my.cnf và đường dẫn là

/usr/local/etc/my.cnf

hy vọng nó sẽ giúp


xem xét thêm lời giải thích cho asnwer của bạn
Inder

@ charles.cc.hsu: thử sử dụng lệnh locate my.cnftrên thiết bị đầu cuối của bạn. kết quả thế nào
aginanjar

6

Bạn có thể tạo tập tin của bạn dưới bất kỳ thư mục nào bạn muốn. Sau khi tạo, bạn có thể "nói" đường dẫn đến cấu hình mysql:

nhập mô tả hình ảnh ở đây


6

Bạn có thể kiểm tra tập tin

/usr/local/bin/mysql.servervà xem từ đâu my.confđang được đọc từ.

Thông thường nó là từ /etc/my.cnfhay ~/my.cnfhay~/.my.cnf


Sửa chữa : ~/.my.cnf. Thêm một dấu chấm trước tên tập tin.
không xác định

5

Đối với MAMP 3.5 Mac El Capitan, hãy tạo một tệp cấu hình trống riêng và viết các cài đặt bổ sung của bạn cho mysql

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

Và thêm như thế này

[mysqld]
max_allowed_packet = 256M


4

ĐỌC TÀI LIỆU!

Tài liệu MySQL cho phiên bản bạn đang sử dụng sẽ giúp ích. Nó thường được mô tả như một Options Filehoặc MySQL Config File.
Các tài liệu có vị trí của các tệp này trong tài liệu, Cũng như các VITALthông tin khác như vị trí & các ví dụ nhỏ về tệp cấu hình phải trông như thế nào.

Phiên bản 8 của MySQL

Phiên bản MySQL 5.7

Phiên bản MySQL 5.6

Phiên bản MySQL 5.5

Phiên bản MySQL 5.6 tiếng Nhật

Ghi chú quan trọng:

Trên các nền tảng Unix, MySQL bỏ qua các tệp cấu hình có thể ghi trên thế giới.

Đây là cố ý như một biện pháp an ninh.

Nói cách khác, nếu bạn có các quyền sai được đặt trên tệp cấu hình của mình thì sẽ KHÔNG tải.

Ví dụ về quyền thiết lập ban đầu của một trong các tệp cấu hình:

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

Ghi chú:

Có thể sử dụng các !includechỉ thị trong các tệp tùy chọn để bao gồm các tệp tùy chọn khác và !includedirđể tìm kiếm các thư mục cụ thể cho các tệp tùy chọn .....

... MySQL không đảm bảo về thứ tự các tệp tùy chọn trong thư mục sẽ được đọc ...

Bất kỳ tệp nào được tìm thấy và bao gồm bằng cách sử dụng lệnh! Gộp trên các hệ điều hành Unix phải có tên tệp kết thúc bằng .cnf. Trên Windows, lệnh này kiểm tra các tệp có phần mở rộng .inihoặc .cnf.

Ví dụ về cách tìm vị trí của tệp cấu hình hoặc tệp nhật ký của bạn:

SQL

Điều này sẽ không hiển thị cho bạn tệp cấu hình nhưng sẽ giúp bạn xác định vị trí các tệp / thư mục cài đặt.

Phiên bản MySQL 5.7 & 8+

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

Phiên bản MySQL <= 5.6

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

SHELL / Terminal

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

Lệnh tín dụng trên: Erwin Mayer từ ServerFault

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

HOẶC LÀ

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

Tệp mẫu

Nếu bạn cần một mẫu tham khảo chi tiết 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

Không liên kết / liên kết đến URL

Hệ thống của tôi:

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 - trợ giúp | grep "Tùy chọn mặc định" -A 1. Điều này đã giúp.
Wandermonk

3

Tôi đang chạy MacOS Catalina (10.15.3) và tìm my.cnftrong /usr/local/etc.


2

Tôi đã kiểm tra trong macOS Sierra, homebrew đã cài đặt MySql 5.7.12

Các tập tin hỗ trợ được đặt tại

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

Chỉ cần sao chép my-default.cnfnhư /etc/my.cnfhay /etc/mysql/my.cnfvà cấu hình sẽ được chọn vào khởi động lại.


4
Tôi mới cài đặt 5.7.18 vào ngày 12.12.4 qua homebrew và chúng không có ở đó.
Norman_h

2

macOS High Sierra phiên bản 10.13.6

mysql Ver 14,14 Phân phối 5.7,22, cho osx10.13 (x86_64) bằng cách sử dụng trình bao bọc EditLine Bản quyền (c) 2000, 2018, Oracle và / hoặc các chi nhánh của nó. Đã đăng ký Bản quyền

Tùy chọn mặc định được đọc từ các tệp sau theo thứ tự đã cho:

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


1

Tôi đang sử dụng phiên bản mysql 5.7.17 trong macOS High Sierra phiên bản 10.13.3 và tôi đã tìm thấy tệp cấu hình mysql ở đây.

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

Cảm ơn các mẹo tìm tập tin cấu hình mặc định. Lưu ý, đây chỉ là một tệp mẫu, vì vậy bạn sẽ muốn sao chép tệp này vào một vị trí được tìm thấy ở mysql --verbose --help | grep my.cnfnơi nó sẽ được chọn, theo: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

Nó thường ở dưới /usr/local/etcmac nếu bạn không tìm thấy nó, bạn có thể tạo nó


0

Đối với Mac, những gì làm việc với tôi là tạo tệp .my.cnf trong đường dẫn ~ của tôi. Hi vọng điêu nay co ich.


0

Sao chép /usr/local/opt/mysql/support-files/my-default.cnf dưới dạng /etc/my.cnf hoặc /etc/mysql/my.cnf và sau đó khởi động lại mysql.


0

Đối với tôi trong phiên bản sierra

sao chép cấu hình mặc định tại:

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

đến

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


0

Trong trường hợp của tôi, tập tin không tồn tại. Trong MySQL Workbench, tôi đã đi đến TÙY CHỌN TÙY CHỌN và tìm thấy một số giá trị mặc định. Tôi bấm vào áp dụng. Nó xin phép. Sau đó, nó đã tạo tập tin my.cnf trong / etc. Tuy nhiên, điều rất quan trọng cần lưu ý là lần đầu tiên bạn nhấp vào "áp dụng", bạn không thực hiện bất kỳ thay đổi nào đối với cấu hình mặc định. Khi tệp đã được tạo, bạn có thể thực hiện các thay đổi sẽ được áp dụng khi bạn nhấp vào "áp dụng". Nếu không, bạn sẽ không được hiển thị nút áp dụng khi bạn thực hiện thay đổi.


Tôi có một tệp tùy chọn tại /etc/mysql/my.cnfnhưng MySQL Workbench không biết về nó. Thay vào đó, nó phàn nàn rằng tập tin cấu hình với một đường dẫn trống không thể được tìm thấy và sau đó cung cấp để tạo một tập tin mới.
Alan Snyder

0

Sau phiên bản 5.7.18 của MySQL, nó không cung cấp tệp cấu hình mặc định trong thư mục tệp hỗ trợ. Vì vậy, bạn có thể tạo tệp my.cnf theo cách thủ công ở vị trí mà MySQL sẽ đọc, như /etc/mysql/my.cnf và thêm cấu hình bạn muốn thêm vào tệp.


0

Các tùy chọn rDefault được đọc từ các tệp sau theo thứ tự đã cho: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf


0

Tôi đang chạy MacOS Mojave (10.14.6) và để MySQL nhận ra tệp cấu hình của mình, tôi đã phải đặt nó trong /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf. Ngoài ra, tôi có một liên kết tượng trưng chỉ đến nó từ /usr/local/@mysql/etc/my.cnf.

Tôi đã cố gắng tắt sql_mode = only_full_group_by và thiết lập tùy chọn đó trong tệp cấu hình là cách duy nhất tôi có thể khiến cài đặt duy trì trong các phiên. Nội dung của tệp cấu hình là:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

Tôi đang sử dụng bản cài đặt gốc của MySQL, không phải cài đặt Homebrew.


0

Đối với mysql 8.0.19, cuối cùng tôi đã tìm thấy my.cnf tại đây: /usr/local/opt/mysql/.bption/etc Tôi đã sao chép nó vào / usr / local / opt / mysql / và sửa đổi nó. Sau đó, tôi khởi động lại dịch vụ mysql, nó hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.