สำหรับ homebrew mysql ติดตั้งอยู่ที่ไหน my.cnf มันติดตั้งหรือไม่
สำหรับ homebrew mysql ติดตั้งอยู่ที่ไหน my.cnf มันติดตั้งหรือไม่
คำตอบ:
ไม่มี 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 บนบรรทัดคำสั่ง
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
จริง ๆ แล้วง่ายต่อการค้นหาบรรทัด
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
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
/usr/local/
(ซึ่งเป็นค่าเริ่มต้นที่ฉันคิดว่า) คุณสามารถวางmy.conf
ใน/usr/local/etc/
ซึ่งไม่ต้องใช้สิทธิ์รูท
brew --prefix mariadb
ใช้ ในการจัดจำหน่าย MariaDB my-default.cnf
ไม่อยู่ - my-small.cnf
เพื่อให้การใช้งาน ลองสิ่งนี้cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
วิธีหนึ่งในการค้นหา:
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
mdfind -name my.cnf
แทนlocate
คำสั่งบน OSX
locate my.cnf
ทำงานโดยตรง ฉันไม่ได้วิ่งsudo /usr/libexec/locate.updatedb
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf
และ/usr/local/etc/my.cnf
เป็นสิ่งที่ฉันได้รับ
ในระบบของฉันมันเป็น
nano /usr/local/etc/my.cnf.default
เป็นแม่แบบและ
nano /usr/local/etc/my.cnf
เป็นที่ทำงาน
ไม่มีอะไรที่ช่วยฉันได้ - ฉันไม่สามารถเขียนทับการตั้งค่าในไฟล์ /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 ...
แถวได้
ตั้งแต่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
ดูเหมือนว่าไฟล์ที่อยู่บน
บนประเภทเปลือกของคุณ 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
คุณสามารถค้นหาmy.cnf
ไฟล์ที่ให้บริการโดยแพ็คเกจเฉพาะเช่น
brew list mysql # or: mariadb
นอกเหนือจากการตรวจสอบว่าไฟล์นั้นอ่านแล้วคุณสามารถเรียกใช้:
sudo fs_usage | grep my.cnf
ซึ่งจะแสดงกิจกรรมของระบบไฟล์แบบเรียลไทม์ที่เกี่ยวข้องกับไฟล์นั้น
ฉันเชื่อว่าคำตอบคือไม่ การติดตั้งหนึ่งใน ~ / .my.cnf หรือ / usr / local / etc น่าจะเป็นทางออกที่ต้องการ
ในกรณีของ Homebrew, mysql ก็จะค้นหา my.cnf ในไดเรกทอรี Cellar เช่น:
/usr/local/Cellar/mysql/5.7.21/my.cnf
สำหรับกรณีที่เราต้องการให้การกำหนดค่าใกล้กับไบนารี - สร้าง my.cnf
ที่นี่หากไม่มี
รีสตาร์ท mysql หลังจากการเปลี่ยนแปลง:
brew services restart mysql
รุ่นเซิร์ฟเวอร์: 8.0.19 Homebrew macOS Catalina 10.15.5 และติดตั้ง MySQL ผ่าน Homebrew พบไฟล์นี้ที่นี่:
/usr/local/etc/my.cnf
วิธีนี้ช่วยได้ :)
สำหรับ 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 วินาที)
$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
วางไฟล์ my.cf ของคุณไปที่ /usr/local/opt/mysql
brew services restart mysql