Đối với các bản cài đặt mysql homebrew, my.cnf ở đâu?


293

Đối với các bản cài đặt mysql homebrew, my.cnf ở đâu? Nó có cài đặt không?

Câu trả lời:


263

Không có my.cnf theo mặc định. Như vậy, MySQL bắt đầu với tất cả các cài đặt 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 --helpvà xem qua nó cho các vị trí conf đượ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 các 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.


49
Điều này dường như không còn là trường hợp nữa; Tôi thấy một 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)
William Turrell 30/12/13

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

2
Tôi đang ở ngày 5.6.26 và tôi không thấy nó ở đó.
Adam Grant

3
Vào ngày 5.6,26 có thể được lolcated bằng cách chạy: ls $(brew --prefix mysql)/*.cnf
danielgpm

23
mysql --help | grep cnfthực sự dễ dàng hơn để tìm thấy các dòng.
vinyll

267

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 số 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, rất có thể bản cài đặt homebrew của MySQL sẽ nằm trong /usr/localtệp vì vậy không nên thêm tệp my.cnf vào /etcthư mục hệ thống , vì vậy tôi đã thay đổi lệnh sao chép tệp vào /usr/local/etc.

Nếu bạn đang sử dụng MariaDB chứ không phải MySQL, hãy sử dụng như sau:

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

4
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
Matt Clegg

7
Nếu Homebrew đã cài đặt MySQL vào /usr/local/(tôi nghĩ là mặc định), bạn cũng có thể đặt phần mềm này my.confvào /usr/local/etc/, không yêu cầu quyền root.
gitaarik

1
brew --prefix mysql không đưa ra đường dẫn chính xác, đối với tôi, nó hiển thị '/usr/local/Cellar/mysql/5.7.16', nhưng thực sự mariadb được cài đặt trong '/ usr / local / opt / mariadb /'
zhoi Chi

@zhaozhi Sử dụng brew --prefix mariadb. Trong bản phân phối MariaDB my-default.cnfkhông tồn tại - vì vậy hãy sử dụng my-small.cnf. Hãy thử điều nàycp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe

Điều này cần phải là câu trả lời được chấp nhận. Điều đầu tiên là không chính xác. Câu hỏi được hỏi có liên quan đến homebrew.
BugHunterUK

30

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

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

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

15
Bạn có thể sử dụng mdfind -name my.cnfthay vì locatelệnh trên OSX
JacopKane 20/03/2016

Đối với tôi locate my.cnflàm việc trực tiếp. Tôi đã không chạysudo /usr/libexec/locate.updatedb
Andru

1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf/usr/local/etc/my.cnf là những gì tôi đã nhận được
Vincent Tang

18

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

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

như mẫu và

nano /usr/local/etc/my.cnf

như đang làm việc


18

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 đề xuất 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 một 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 Tác nhân khởi chạy:

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

Cập nhật:

Nếu bạn có một bản cài đặt homebrew khá gần đây, bạn nên sử dụng các lệnh dịch vụ brew để khởi động lại mysql (sử dụng phiên bản mysql homebrew đã cài đặt của bạn, tức là mysql hoặc mysql@5.7):

brew services stop mysql
brew services start mysql

Tôi nghĩ bạn cũng có thể chạy brew services stop mysqlbrew services start mysqlthay thế các launchctl unload ...dòng.
mhulse

1
Điều đó đúng - nhưng tại thời điểm viết câu trả lời này, các lệnh homebrew này vẫn chưa có sẵn. Tôi sẽ cập nhật câu trả lời
naabster

13

mysql --helphiển thị danh sách các tệp, tôi thấy hữu ích khi dẫn kết quả lsđể xem tệp nào tồn tại:

$ mysql --help | grep /my.cnf | xargs ls
ls: /etc/my.cnf: No such file or directory
ls: /etc/mysql/my.cnf: No such file or directory
ls: ~/.my.cnf: No such file or directory
/usr/local/etc/my.cnf

Đối với MySQL 5.7 (đã cài đặt Homebrew) của tôi, có vẻ như các tệp được bật /usr/local/etc/my.cnf.


10

Trên loại vỏ của bạn my_print_defaults --help

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

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

5

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

brew list mysql # or: mariadb

Ngoài việc xác minh xem tệp đó có được đọc hay không, bạn có thể chạy:

sudo fs_usage | grep my.cnf

sẽ hiển thị cho bạn hoạt động hệ thống tệp trong thời gian thực liên quan đến tệp đó.


4

Tôi tin câu trả lời là không. Cài đặt một trong ~ / .my.cnf hoặc / usr / local / etc dường như là giải pháp ưa thích.


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

1

Trong trường hợp của Homebrew, mysql cũng sẽ tìm kiếm my.cnf trong thư mục Cellar, ví dụ:

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

Đối với trường hợp, người ta thích giữ cấu hình gần với nhị phân - tạo my.cnfở đây nếu thiếu.

Khởi động lại mysql sau khi thay đổi:

brew services restart mysql

1

Phiên bản máy chủ: 8.0.19 Homebrew. macOS Catalina 10.15.5 và cài đặt MySQL thông qua Homebrew. Tìm thấy tập tin này ở đây:

/usr/local/etc/my.cnf

Giải pháp này đã giúp :)


-1

Đối với MacOS (High Sierra), MySQL đã được cài đặt với nhà sản xuất bia.

Việc tăng các biến toàn cục từ môi trường mysql không thành công. Vì vậy, trong trường hợp đó, việc tạo ~ / .my.cnf là lựa chọn an toàn nhất. Thêm các biến bằng [mysqld] sẽ bao gồm các thay đổi (Lưu ý: nếu bạn thay đổi bằng [mysql], thay đổi có thể không hoạt động).

<~ / .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M

Khởi động lại máy chủ mysql. và kiểm tra các biến. y

sql> CHỌN @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + ---------------------- +

1 hàng trong bộ (0,00 giây)


-1
  1. $ps aux | grep mysqld /usr/local/opt/mysql/bin/mysqld --basedir=/usr/local/opt/mysql --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql/lib/plugin

  2. Thả tập tin my.cf của bạn vào /usr/local/opt/mysql

  3. brew services restart mysql

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.