Untuk menginstal mysql homebrew, di mana my.cnf? Apakah itu menginstalnya?
Untuk menginstal mysql homebrew, di mana my.cnf? Apakah itu menginstalnya?
Jawaban:
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 --help
dan 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.
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
sebenarnya lebih mudah menemukan garis.
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/local
jadi file my.cnf tidak boleh ditambahkan ke /etc
folder 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
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
/usr/local/
(yang merupakan default saya pikir), Anda juga dapat menempatkan my.conf
di /usr/local/etc/
, yang tidak memerlukan hak akses root.
brew --prefix mariadb
. Dalam distribusi MariaDB my-default.cnf
tidak ada - jadi gunakan my-small.cnf
. Coba inicp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
Satu cara untuk mengetahuinya:
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
mdfind -name my.cnf
alih-alih locate
perintah pada OSX
locate my.cnf
bekerja secara langsung. Saya tidak larisudo /usr/libexec/locate.updatedb
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf
dan /usr/local/etc/my.cnf
itulah yang saya dapatkan
dalam sistem saya itu
nano /usr/local/etc/my.cnf.default
sebagai templat dan
nano /usr/local/etc/my.cnf
bekerja
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
brew services stop mysql
dan brew services start mysql
menggantikan launchctl unload ...
garis.
Karena mysql --help
memperlihatkan daftar file, saya merasa berguna untuk mem-pipe hasil ls
untuk 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
.
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
Anda dapat menemukan di mana my.cnf
file 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.
Saya percaya jawabannya tidak. Menginstal satu di ~ / .my.cnf atau / usr / local / etc tampaknya menjadi solusi yang lebih disukai.
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
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 :)
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)
$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
Letakkan file my.cf Anda ke /usr/local/opt/mysql
brew services restart mysql