สำหรับ homebrew mysql ติดตั้งอยู่ที่ไหน my.cnf


คำตอบ:


263

ไม่มี my.cnf โดยค่าเริ่มต้น ดังนั้น MySQL จะเริ่มต้นด้วยการตั้งค่าเริ่มต้นทั้งหมด หากคุณต้องการสร้าง my.cnf ของคุณเองเพื่อแทนที่ค่าเริ่มต้นใด ๆ ให้วางไว้ที่ /etc/my.cnf

นอกจากนี้คุณยังสามารถเรียกใช้mysql --helpและค้นหาตำแหน่ง Conf ที่อยู่ในรายการได้

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.

อย่างที่คุณเห็นมีตัวเลือกบางอย่างสำหรับการข้ามไฟล์ conf หรือระบุไฟล์อื่นเพื่ออ่านเมื่อคุณเรียกใช้ mysql บนบรรทัดคำสั่ง


49
ดูเหมือนจะไม่เป็นเช่นนี้อีกแล้ว ฉันเห็นไฟล์ my.cnf ใน /usr/local/Cellar/mysql/5.6.15/ (หรือเวอร์ชั่นที่คุณติดตั้งแล้วแต่รุ่นใด)
William Turrell

6
@williamt "mysql --help" ไม่ได้แสดงรายการไฟล์ว่ามีการใช้งานฉันคิดว่าเป็นเพียงค่าเริ่มต้นที่มาพร้อมกับไฟล์การติดตั้ง
Vinicius Pinto

2
ฉันใช้เวลา 5.6.26 และฉันไม่เห็นมัน
Adam Grant

3
เมื่อวันที่ 5.6.26 สามารถ lolcated โดยการวิ่ง: ls $(brew --prefix mysql)/*.cnf
danielgpm

23
mysql --help | grep cnfจริง ๆ แล้วง่ายต่อการค้นหาบรรทัด
vinyll

267

homebrew mysql มีตัวอย่างไฟล์การกำหนดค่าในโฟลเดอร์สนับสนุนไฟล์การติดตั้ง

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

หากคุณต้องการเปลี่ยนการตั้งค่าเริ่มต้นคุณสามารถใช้วิธีใดวิธีหนึ่งต่อไปนี้เป็นจุดเริ่มต้น

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

@rednaw ชี้ให้เห็นว่าการติดตั้ง homebrew ของ MySQL จะเป็นไปได้มากที่สุด/usr/localดังนั้นไฟล์ my.cnf ไม่ควรถูกเพิ่มลงใน/etcโฟลเดอร์ระบบดังนั้นฉันจึงเปลี่ยนคำสั่งเพื่อคัดลอกไฟล์ลงใน/usr/local/etcโฟลเดอร์เพื่อให้ฉันได้เปลี่ยนคำสั่งในการคัดลอกไฟล์ลงใน

หากคุณใช้ MariaDB แทนที่จะใช้ MySQL ให้ใช้สิ่งต่อไปนี้:

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
หาก Homebrew ติดตั้ง MySQL ใน/usr/local/(ซึ่งเป็นค่าเริ่มต้นที่ฉันคิดว่า) คุณสามารถวางmy.confใน/usr/local/etc/ซึ่งไม่ต้องใช้สิทธิ์รูท
gitaarik

1
ชง - คำนำหน้า mysql ไม่ได้ให้เส้นทางที่ถูกต้องสำหรับฉันมันแสดงให้เห็นว่า '/usr/local/Cellar/mysql/5.7.16' แต่มีการติดตั้ง mariadb ใน '/ usr / local / opt / mariadb /'
zhaozhi

@zhaozhi brew --prefix mariadbใช้ ในการจัดจำหน่าย MariaDB my-default.cnfไม่อยู่ - my-small.cnfเพื่อให้การใช้งาน ลองสิ่งนี้cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe

นี่จะต้องเป็นคำตอบที่ได้รับการยอมรับ อันแรกไม่ถูกต้อง คำถามที่ถามเกี่ยวข้องกับ homebrew
BugHunterUK

30

วิธีหนึ่งในการค้นหา:

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

4
คำตอบที่ยอดเยี่ยมฉันได้เรียนรู้เกี่ยวกับ locate.updatedb อย่างไรก็ตามไม่มีไฟล์กำหนดค่าตามค่าเริ่มต้นให้ดูคำตอบด้านล่าง
glebm

15
คุณสามารถใช้mdfind -name my.cnfแทนlocateคำสั่งบน OSX
JacopKane

สำหรับฉันlocate my.cnfทำงานโดยตรง ฉันไม่ได้วิ่งsudo /usr/libexec/locate.updatedb
Andru

1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnfและ/usr/local/etc/my.cnf เป็นสิ่งที่ฉันได้รับ
Vincent Tang


18

ไม่มีอะไรที่ช่วยฉันได้ - ฉันไม่สามารถเขียนทับการตั้งค่าในไฟล์ /etc/my.cnf ดังนั้นฉันค้นหาเช่น John แนะนำhttps://stackoverflow.com/a/7974114/717251

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

พบ my.cnf อีกระบบ

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

การเปลี่ยนไฟล์นี้ใช้งานได้สำหรับฉัน! อย่าลืมรีสตาร์ท Agent Launch:

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

ปรับปรุง:

หากคุณมีการติดตั้ง homebrew ล่าสุดคุณควรใช้คำสั่ง brew services เพื่อเริ่ม mysql ใหม่ (ใช้ homebrew mysql รุ่นที่ติดตั้งของคุณเช่น mysql หรือ mysql@5.7):

brew services stop mysql
brew services start mysql

ฉันคิดว่าคุณสามารถวิ่งbrew services stop mysqlและbrew services start mysqlเข้าlaunchctl unload ...แถวได้
mhulse

1
นั่นเป็นความจริง - แต่ในเวลาที่เขียนคำตอบนี้คำสั่งโฮมบรูว์เหล่านี้ยังไม่สามารถใช้ได้ ฉันจะอัปเดตคำตอบ
naabster

13

ตั้งแต่mysql --helpแสดงรายการไฟล์ฉันพบว่ามีประโยชน์ในการไพพ์ผลลัพธ์lsเพื่อดูว่ามีไฟล์ใดบ้าง:

$ 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

สำหรับฉัน (Homebrew ติดตั้ง) MySQL 5.7 /usr/local/etc/my.cnfดูเหมือนว่าไฟล์ที่อยู่บน


10

บนประเภทเปลือกของคุณ my_print_defaults --help

ที่ด้านล่างของผลลัพธ์คุณควรจะเห็นไฟล์ที่เซิร์ฟเวอร์อ่านการกำหนดค่า มันพิมพ์อะไรเช่นนี้

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

คุณสามารถค้นหาmy.cnfไฟล์ที่ให้บริการโดยแพ็คเกจเฉพาะเช่น

brew list mysql # or: mariadb

นอกเหนือจากการตรวจสอบว่าไฟล์นั้นอ่านแล้วคุณสามารถเรียกใช้:

sudo fs_usage | grep my.cnf

ซึ่งจะแสดงกิจกรรมของระบบไฟล์แบบเรียลไทม์ที่เกี่ยวข้องกับไฟล์นั้น


4

ฉันเชื่อว่าคำตอบคือไม่ การติดตั้งหนึ่งใน ~ / .my.cnf หรือ / usr / local / etc น่าจะเป็นทางออกที่ต้องการ


2
ใน MBP ของฉันเท่านั้น /etc/my.cnf อนุญาตให้ฉันส่งผลต่อการติดตั้ง Homebrew ของ mysql
ewalshe

1

ในกรณีของ Homebrew, mysql ก็จะค้นหา my.cnf ในไดเรกทอรี Cellar เช่น:

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

สำหรับกรณีที่เราต้องการให้การกำหนดค่าใกล้กับไบนารี - สร้าง my.cnfที่นี่หากไม่มี

รีสตาร์ท mysql หลังจากการเปลี่ยนแปลง:

brew services restart mysql


-1

สำหรับ MacOS (High Sierra), MySQL ที่ติดตั้งไว้กับ home brew

การเพิ่มตัวแปรส่วนกลางจากสภาพแวดล้อม mysql ไม่สำเร็จ ดังนั้นในกรณีนั้นการสร้าง ~ / .my.cnf เป็นตัวเลือกที่ปลอดภัยที่สุด การเพิ่มตัวแปรด้วย [mysqld] จะรวมการเปลี่ยนแปลง (หมายเหตุ: หากคุณเปลี่ยนด้วย [mysql] การเปลี่ยนแปลงอาจไม่ทำงาน)

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

รีสตาร์ทเซิร์ฟเวอร์ mysql และตรวจสอบตัวแปร Y

sql> SELECT @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + + ----------------------

1 แถวในชุด (0.00 วินาที)


-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. วางไฟล์ my.cf ของคุณไปที่ /usr/local/opt/mysql

  3. brew services restart mysql

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.