2011-11-01 41 views

Trả lời

176

Không có my.cnf theo mặc định. Như vậy, MySQL bắt đầu với tất cả các thiết lập mặc định. Nếu bạn muốn tạo my.cnf của riêng mình để ghi đè bất kỳ giá trị mặc định nào, hãy đặt nó tại /etc/my.cnf.

Ngoài ra, bạn có thể chạy mysql --help và xem qua nó cho các vị trí được liệt kê.

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 
The following groups are read: mysql client 
The following options may be given as the first argument: 
--print-defaults  Print the program argument list and exit. 
--no-defaults   Don't read default options from any option file. 
--defaults-file=#  Only read default options from the given file #. 
--defaults-extra-file=# Read this file after the global files are read. 

Như bạn có thể thấy, cũng có một số tùy chọn để bỏ qua tệp conf hoặc chỉ định các tệp khác để đọc khi bạn gọi mysql trên dòng lệnh.

+40

Điều này dường như không còn là trường hợp; Tôi thấy tệp my.cnf trong /usr/local/Cellar/mysql/5.6.15/ (hoặc bất kỳ phiên bản nào bạn đã cài đặt) –

+4

@williamt "mysql --help" không liệt kê tệp đó đang được sử dụng, tôi nghĩ nó chỉ là một mặc định đi kèm với các tập tin cài đặt –

+1

@ williamt Tôi nghĩ rằng Vinicius là đúng. Tôi thấy /usr/local/Cellar/mysql/5.6.20_1/my.cnf nhưng khi tôi thêm log-bin vào nó và khởi động lại mysqld, nó vẫn chưa được kích hoạt tính năng ghi log nhị phân. Cho đến khi tôi sao chép my.cnf vào /etc/my.cnf thì việc ghi nhật ký nhị phân đã được bật. Có lẽ tập tin my.cnf được sử dụng trong quá trình cài đặt ban đầu, tôi không chắc chắn. – Mark

17

Một cách để tìm hiểu:

sudo /usr/libexec/locate.updatedb 
# wait a few minutes for it to finish 
locate my.cnf 
+1

Câu trả lời thú vị, tôi đã tìm hiểu về locate.updatedb. Tuy nhiên, không có tệp cấu hình theo mặc định, hãy xem câu trả lời bên dưới – glebm

+9

Bạn có thể sử dụng 'mdfind -name my.cnf' thay vì lệnh' locate' trên OSX – JacopKane

+0

Đối với tôi 'locate my.cnf' hoạt động trực tiếp. Tôi đã không chạy 'sudo/usr/libexec/locate.updatedb' – Andru

4

Tôi tin rằng câu trả lời là không. Cài đặt một trong ~/.my.cnf hoặc/usr/local/etc có vẻ là giải pháp ưu tiên.

+2

Trên MBP chỉ /etc/my.cnf của tôi cho phép tôi ảnh hưởng đến cài đặt Homebrew của mysql. – ewalshe

257

mysql homebrew chứa các tệp cấu hình mẫu trong thư mục tệp hỗ trợ của cài đặt.

ls $(brew --prefix mysql)/support-files/my-* 

Nếu bạn cần thay đổi cài đặt mặc định, bạn có thể sử dụng một trong các điểm này làm điểm bắt đầu.

cp $(brew --prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf 

Như @rednaw chỉ ra, một homebrew cài đặt của MySQL rất có thể sẽ nằm trong /usr/local nên file my.cnf không nên được thêm vào thư mục hệ thống /etc, vì vậy tôi đã thay đổi lệnh để sao chép nộp vào /usr/local/etc.

Nếu bạn đang sử dụng MariaDB hơn là MySQL sử dụng như sau:

cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf 
+1

Bây giờ nó là "my-default.cnf" nhưng vẫn hoạt động tuyệt vời – Ashley

+4

'sudo cp $ (brew --prefix mysql)/support- Các tệp/my-default.cnf/etc/my.cnf' – mattclegg

+6

Nếu Homebrew cài đặt MySQL trong '/ usr/local /' (là mặc định tôi nghĩ), bạn cũng có thể đặt 'my.conf' trong'/usr/local/etc/', không yêu cầu quyền root. – rednaw

8

On loại shell của bạn my_print_defaults --help

Ở dưới cùng của kết quả, bạn sẽ có thể để xem các tập tin mà từ đó máy chủ đọc cấu hình. Bản in có nội dung như sau:

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf 
12

Không có gì thực sự giúp tôi - Tôi không thể ghi đè cài đặt trong tệp /etc/my.cnf. Vì vậy, tôi đã tìm kiếm như John đề nghị https://stackoverflow.com/a/7974114/717251

sudo /usr/libexec/locate.updatedb 
# wait a few minutes for it to finish 
locate my.cnf 

Nó tìm thấy my.cnf khác trong

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

thay đổi tập tin này làm việc cho tôi! Đừng quên khởi động lại Đại lý khởi chạy:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist 
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist 
3

Bạn có thể tìm thấy nơi tệp my.cnf được cung cấp bởi gói cụ thể, ví dụ:

brew list mysql # or: mariadb 

Bên cạnh đó để xác minh nếu tập tin đó được đọc, bạn có thể chạy:

sudo fs_usage | grep my.cnf 

mà sẽ cho bạn thấy hoạt động hệ thống tập tin trong thời gian thực liên quan đến tập tin đó.

1

trong hệ thống của tôi đó là

nano /usr/local/etc/my.cnf.default 

như mẫu và

nano /usr/local/etc/my.cnf 

như làm việc.

Các vấn đề liên quan