Yanıtlar:
Linux'taysanız, mysqld ile başlayın, strace
örneğin strace ./mysqld
.
Diğer tüm sistem çağrıları arasında şöyle bir şey bulacaksınız:
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
Gördüğünüz gibi .. .cnf dosyalarını listeler, kullanmaya çalışır ve sonunda kullanır.
ps auxf
MySQL için çalıştırılan komutu çalıştırmalı ve bulmalısınız. Genellikle gibi bir şeye benziyor mysqld --basedir=/usr/local/mysql ...
(not ... sadece komutta daha fazla bayrak olabileceği anlamına gelir, ancak hepsini listelemeyeceğim) Bir kez bulduğunuzda, her şeyi kopyalayın ve MySQL'i kapatın. Linux'taysanız /etc/init.d/mysqld stop
ya da mysqladmin -u root -p shutdown
. Sonra strace
kopyaladığınız mysql komutuyla çalıştırın . Öyleyse şöyle görünecektir:strace mysqld --basedir=/usr/local/mysql
open(...
. Bunun yerine biten 4 satırım var = -1 Err#2
. Hangi dosyanın yüklendiğini nasıl anlayabilirim?
sudo dtruss mysqld 2>&1|grep my.cnf
, bu çıktı büyük olasılıkla hiçbir dosyanın bulunmadığı ve hiçbirinin açılmadığı anlamına gelir.
Fantastik "Yüksek Performanslı MySQL" O'Reilly kitabından alınmıştır:
$ 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
. !includedir
Dosyamdaki direktifin neden çalışmadığını anlamaya /etc/mysql/my.cnf
çalışıyorum.
mysqld
tam yolla görüşmeniz gerekiyor ?!
Eğer çalıştırırsanız mysql --verbose --help | less
, hangi .cnf
dosyaları arayacağını 11. satırdan anlatacaktır .
Ayrıca mysql --print-defaults
, yapılandırma değerlerini nasıl kullanacağını göstermek için de yapabilirsiniz . Bu, yalnızca hangi yapılandırma dosyasını yüklediğini belirlemede de yararlı olabilir.
mysqld
yerinemysql
mysqld --print-defaults
, bu soruyu googlederken bana tam olarak ne istediğimi verdi.
Windows'tayım ve MySQL topluluğu 5.6'nın en son sürümünü yükledim
Ne yapılandırma dosyasının kullandığı görmek için ne yaptım Yönetimsel Araçlar> Hizmetler> MySQL56> Sağ tıklayın> Özellikler gidin ve yürütülebilir yolunu kontrol etmek oldu:
"C: / Program Dosyaları / 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
varsayılan olarak.
Bir alternatif kullanmaktır
mysqladmin variables
mysqld --help --verbose tehlikelidir. Çalışan örnek için pidfile üzerine kolayca yazabilirsiniz! --pid-file = XYZ ile kullanın
Oh, ve çalışan birden fazla örneğiniz varsa bunu gerçekten kullanamazsınız. Yalnızca varsayılan değeri gösterir.
Bu konuda gerçekten iyi bir makale:
Ubuntu'da hızlı bir test yaptım:
/etc/mysql/my.cnf dosyasını oluşturan mysql sunucusunu yükledi
mysqld --verbose --help | grep -A 1 "Varsayılan seçenekler"
110112 13:35:26 [Not] 'FEDERATED' eklentisi devre dışı.
Varsayılan seçenekler verilen dosyada aşağıdaki dosyalardan okunur: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~ / .my.cnf
her biri farklı bir port numarasına sahip /etc/my.cnf ve /usr/etc/my.cnf oluşturdu
mysql yeniden başlatıldı - /usr/etc/my.cnf içinde ayarlanan bağlantı noktası numarasını kullanıyordu
Ayrıca bu arada mysqld için --defaults-file seçeneğini buldu. Orada bir yapılandırma dosyası belirtirseniz, / usr / sbin / mysqld --verbose --help | grep -A 1 "Varsayılan seçenekler"
Bazı sunucularda birden fazla MySQL sürümü kurulu ve yapılandırılmıştır. Aşağıdaki Unix komutuyla çalışan doğru sürümle uğraştığınızdan emin olun:
ps -ax | grep mysql
Hizmet olarak mysql ile windows sunucusu çalıştıran insanlar için, hangi yapılandırma dosyasını çalıştırdığınızı bulmanın kolay bir yolu, hizmetler kontrol panelini açmak, mysql hizmetinizi (benim durumumda 'MYSQL56') bulmak, sağ tıklama ve tıklama özelliklerini bulmaktır . Daha sonra buradan defaults-file
yapılandırma dosyanızın nerede olduğunu gösteren bir anahtara sahip olması gereken "Yürütülebilir Yol" u kontrol edebilirsiniz .
Windows kullanıyorsanız Sysinternals procmon'unu kullanabilirsiniz . Açın ve filtre ayarını bu şekilde yapılandırın, ardından "Ekle" yi tıklayın. Şimdi prokmon mysqld izleyecek.
Şimdi mysql sunucunuzu normal şekilde başlatın. Procmon mysql'in arka plan işlemlerini yakalar. "My" ifadesini arayın. procmon sonuç bölmesinde ve aşağıdaki gibi bir şey bulacaksınız:
MySQL'in sırayla yapılandırma dosyalarının bir listesini aradığı açıktır. Benim durumumda C:\mysql-5.7.19-winx64\my.cnf
başarılı bir şekilde bulundu, bu yüzden bunu kullanıyor.