Untuk menginstal mysql homebrew, di mana my.cnf?


293

Untuk menginstal mysql homebrew, di mana my.cnf? Apakah itu menginstalnya?

Jawaban:


263

Tidak ada my.cnf secara default. Dengan demikian, MySQL dimulai dengan semua pengaturan default. Jika Anda ingin membuat my.cnf Anda sendiri untuk mengesampingkan default apa pun, letakkan di /etc/my.cnf.

Juga, Anda dapat menjalankan mysql --helpdan melihat melalui itu untuk lokasi conf terdaftar.

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.

Seperti yang Anda lihat, ada juga beberapa opsi untuk mem-bypass file conf, atau menentukan file lain untuk dibaca ketika Anda memanggil mysql pada baris perintah.


49
Ini tampaknya tidak lagi menjadi masalah; Saya melihat file my.cnf di /usr/local/Cellar/mysql/5.6.15/ (atau versi apa pun yang telah Anda instal)
William Turrell

6
@williamt "mysql --help" tidak mencantumkan file yang digunakan, saya pikir itu hanya default yang datang dengan file instalasi
Vinicius Pinto

2
Saya di 5.6.26 dan saya tidak melihatnya di sana.
Adam Grant

3
Pada tanggal 5.6.26 dapat di-lolcated dengan menjalankan: ls $(brew --prefix mysql)/*.cnf
danielgpm

23
mysql --help | grep cnfsebenarnya lebih mudah menemukan garis.
vinyll

267

Homebrew mysql berisi contoh file konfigurasi di folder file dukungan instalasi.

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

Jika Anda perlu mengubah pengaturan default, Anda dapat menggunakan salah satunya sebagai titik awal.

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

Seperti yang ditunjukkan oleh @rednaw, instalasi homebrew dari MySQL kemungkinan besar berada di dalam /usr/localjadi file my.cnf tidak boleh ditambahkan ke /etcfolder sistem , jadi saya telah mengubah perintah untuk menyalin file ke dalamnya /usr/local/etc.

Jika Anda menggunakan MariaDB daripada MySQL, gunakan yang berikut ini:

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
Jika Homebrew menginstal MySQL di /usr/local/(yang merupakan default saya pikir), Anda juga dapat menempatkan my.confdi /usr/local/etc/, yang tidak memerlukan hak akses root.
gitaarik

1
brew --prefix mysql tidak memberikan jalur yang benar, bagi saya, ini menunjukkan '/usr/local/Cellar/mysql/5.7.16', tetapi memang mariadb dipasang di '/ usr / local / opt / mariadb /'
zhaozhi

@zhaozhi Gunakan brew --prefix mariadb. Dalam distribusi MariaDB my-default.cnftidak ada - jadi gunakan my-small.cnf. Coba inicp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
sebelum

Ini perlu jawaban yang diterima. Yang pertama salah. Pertanyaan yang diajukan berkaitan dengan homebrew.
BugHunterUK

30

Satu cara untuk mengetahuinya:

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

4
Jawaban yang luar biasa, saya belajar tentang loc.updatedb. Namun, tidak ada file konfigurasi secara default, lihat jawaban di bawah ini
glebm

15
Anda dapat menggunakan mdfind -name my.cnfalih-alih locateperintah pada OSX
JacopKane

Bagi saya locate my.cnfbekerja secara langsung. Saya tidak larisudo /usr/libexec/locate.updatedb
Andru

1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnfdan /usr/local/etc/my.cnf itulah yang saya dapatkan
Vincent Tang

18

dalam sistem saya itu

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

sebagai templat dan

nano /usr/local/etc/my.cnf

bekerja


18

Tidak ada yang benar-benar membantu saya - saya tidak bisa menimpa pengaturan dalam file /etc/my.cnf. Jadi saya mencari seperti yang disarankan John https://stackoverflow.com/a/7974114/717251

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

Ia menemukan my.cnf lain di

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

mengubah file ini berhasil untuk saya! Jangan lupa untuk memulai kembali Agen peluncuran:

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

Memperbarui:

Jika Anda memiliki instalasi homebrew yang cukup baru, Anda harus menggunakan perintah brew services untuk me-restart mysql (gunakan versi mysql homebrew yang terinstal, yaitu mysql atau mysql@5.7):

brew services stop mysql
brew services start mysql

Saya pikir Anda juga dapat menjalankan brew services stop mysqldan brew services start mysqlmenggantikan launchctl unload ...garis.
mhulse

1
Itu benar - tetapi pada saat penulisan jawaban ini perintah-perintah homebrew ini belum tersedia. Saya akan memperbarui jawabannya
naabster

13

Karena mysql --helpmemperlihatkan daftar file, saya merasa berguna untuk mem-pipe hasil lsuntuk melihat yang mana dari mereka:

$ 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

Untuk saya (Homebrew terpasang) MySQL 5.7, tampaknya file-file ini aktif /usr/local/etc/my.cnf.


10

Pada tipe shell Anda my_print_defaults --help

Di bagian bawah hasil, Anda harus dapat melihat file dari mana server membaca konfigurasi. Mencetak sesuatu seperti ini:

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

Anda dapat menemukan di mana my.cnffile itu disediakan oleh paket tertentu, misalnya

brew list mysql # or: mariadb

Selain memverifikasi apakah file itu dibaca, Anda dapat menjalankan:

sudo fs_usage | grep my.cnf

yang akan menunjukkan kepada Anda aktivitas sistem file secara real-time terkait dengan file itu.


4

Saya percaya jawabannya tidak. Menginstal satu di ~ / .my.cnf atau / usr / local / etc tampaknya menjadi solusi yang lebih disukai.


2
Di MBP saya saja /etc/my.cnf memungkinkan saya memengaruhi instalasi Homebrew di mysql.
ewalshe

1

Dalam kasus Homebrew, mysql juga akan mencari my.cnf di direktori Cellar-nya, misalnya:

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

Untuk kasus ini, seseorang lebih memilih untuk menjaga konfigurasi dekat dengan binari - create my.cnf sini jika tidak ada.

Mulai ulang mysql setelah perubahan:

brew services restart mysql

1

Versi server: 8.0.19 Homebrew. macOS Catalina 10.15.5 dan menginstal MySQL melalui Homebrew. Menemukan file ini di sini:

/usr/local/etc/my.cnf

Solusi ini membantu :)


-1

Untuk MacOS (High Sierra), MySQL yang telah diinstal dengan home brew.

Meningkatkan variabel global dari lingkungan mysql tidak berhasil. Jadi dalam hal ini pembuatan ~ / .my.cnf adalah opsi paling aman. Menambahkan variabel dengan [mysqld] akan mencakup perubahan (Catatan: jika Anda mengubah dengan [mysql], perubahan itu mungkin tidak berfungsi).

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

Mulai ulang server mysql. dan periksa variabelnya. y

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

1 baris dalam set (0,00 dtk)


-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. Letakkan file my.cf Anda ke /usr/local/opt/mysql

  3. brew services restart mysql

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.