Jawaban:
Jika Anda menggunakan Linux, maka mulailah 'mysqld' dengan strace
, misalnya strace ./mysqld
.
Di antara semua panggilan sistem lainnya, Anda akan menemukan sesuatu seperti:
stat64("/etc/my.cnf", 0xbfa3d7fc) = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
Jadi, seperti yang Anda lihat .. ini mencantumkan file .cnf, yang dicoba digunakan dan akhirnya digunakan.
ps auxf
dan menemukan perintah dieksekusi untuk MySQL. Biasanya terlihat seperti sesuatu seperti mysqld --basedir=/usr/local/mysql ...
(perhatikan ... hanya berarti bahwa mungkin ada lebih banyak bendera dalam perintah tetapi saya tidak akan mencantumkan semuanya) Setelah Anda menemukannya, salin semuanya dan kemudian matikan MySQL. Jika Anda menggunakan Linux, itu /etc/init.d/mysqld stop
atau mysqladmin -u root -p shutdown
. Kemudian jalankan strace
dengan perintah mysql yang Anda salin. Jadi akan terlihat seperti ini:strace mysqld --basedir=/usr/local/mysql
open(...
garis. Sebaliknya saya memiliki 4 baris yang diakhiri dengan = -1 Err#2
. Bagaimana Anda tahu sekarang file mana yang dimuat?
sudo dtruss mysqld 2>&1|grep my.cnf
@mgPePe, keluaran itu kemungkinan berarti tidak ada file yang ditemukan sehingga tidak ada yang dibuka.
Diambil dari buku O'Reilly "High Performance MySQL" yang fantastis:
$ which mysqld
/usr/sbin/mysqld
$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf
!includedir
. Saya mencoba mencari tahu mengapa !includedir
arahan dalam /etc/mysql/my.cnf
file saya tidak berfungsi.
mysqld
dengan jalur penuh ?!
Jika Anda menjalankannya mysql --verbose --help | less
akan memberi tahu Anda tentang saluran 11 yang.cnf
file akan dicari.
Anda juga dapat melakukannya mysql --print-defaults
untuk menunjukkan kepada Anda bagaimana nilai konfigurasi yang akan digunakan. Ini juga dapat berguna dalam mengidentifikasi file konfigurasi mana yang sedang dimuat.
mysqld
sebagai gantimysql
mysqld --print-defaults
, itu memberi saya apa yang saya inginkan ketika saya mencari di Google pertanyaan ini.
Saya di Windows dan saya telah menginstal versi terbaru dari komunitas MySQL 5.6
Apa yang saya lakukan untuk melihat apa yang menggunakan file konfigurasi adalah untuk pergi ke Administrative Tools> Services> MySQL56> Klik kanan> Properties dan periksa path ke executable:
"C: / Program Files / MySQL / MySQL Server 5.6 / bin \ mysqld" --defaults-file = "C: \ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini" MySQL56
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
default.
Alternatifnya adalah menggunakan
mysqladmin variables
mysqld --help --verbose berbahaya. Anda dapat dengan mudah menimpa pidfile untuk menjalankan instance! gunakan dengan --pid-file = XYZ
Oh, dan Anda tidak bisa menggunakannya jika Anda menjalankan lebih dari 1 instance. Ini hanya akan menunjukkan kepada Anda nilai default.
Artikel yang sangat bagus tentang itu:
Baru saja melakukan tes cepat di ubuntu:
menginstal mysql-server, yang menciptakan /etc/mysql/my.cnf
mysqld --verbose --help | grep -A 1 "Opsi default"
110112 13:35:26 [Catatan] Plugin 'FEDERATED' dinonaktifkan.
Opsi default dibaca dari file-file berikut dalam urutan yang diberikan: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~ / .my.cnf
menciptakan /etc/my.cnf dan /usr/etc/my.cnf, masing-masing dengan nomor port yang berbeda
me-restart mysql - menggunakan nomor port yang diatur di /usr/etc/my.cnf
Sementara itu menemukan opsi --defaults-file ke mysqld. Jika Anda menentukan file config di sana, hanya yang akan digunakan, terlepas dari apa yang dikembalikan oleh / usr / sbin / mysqld --verbose --help | grep -A 1 "Opsi default"
Saya menemukan ini sangat berguna:
Control Panel -> Administration Tools
Properties
Path to executable
dan lihat apakah itu berisi jalur kemy.ini/my.cfg
Beberapa server memiliki beberapa versi MySQL yang diinstal dan dikonfigurasi. Pastikan Anda berurusan dengan versi yang benar berjalan dengan perintah Unix:
ps -ax | grep mysql
Untuk orang yang menjalankan windows server dengan mysql sebagai layanan, cara mudah untuk mengetahui file konfigurasi apa yang Anda jalankan adalah dengan membuka panel kontrol layanan, temukan layanan mysql Anda (dalam kasus saya 'MYSQL56'), klik kanan dan klik properti . Kemudian dari sini Anda dapat memeriksa "Path to Executable" yang seharusnya memiliki defaults-file
saklar yang menunjuk ke tempat file konfigurasi Anda.
Jika Anda berada di Windows, Anda dapat menggunakan Sysinternals ProcMon . Buka dan konfigurasikan pengaturan filter seperti ini, lalu klik "Tambah". Sekarang procmon akan memonitor mysqld.
Sekarang jalankan server mysql Anda seperti biasa. Procmon akan menangkap operasi latar belakang mysql. Cari "saya." di panel hasil procmon dan Anda akan menemukan sesuatu seperti berikut:
Sudah jelas bahwa mysql mencari daftar file konfigurasi pada gilirannya. Dalam kasus saya C:\mysql-5.7.19-winx64\my.cnf
berhasil ditemukan sehingga menggunakan ini.