Hangi MySQL yapılandırma dosyasının kullanıldığını belirleme


142

MySQL 5.0'ın hangi yapılandırma dosyasını kullandığını belirleyen bir komut var mı?

Yanıtlar:


60

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.


9
Ve bunu hiçbir şey bozmadan çalışan bir sistemde nasıl yapabilirim?
Milan Babuškov

5
@ MilanBabuškov ps auxfMySQL 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 stopya da mysqladmin -u root -p shutdown. Sonra stracekopyaladığınız mysql komutuyla çalıştırın . Öyleyse şöyle görünecektir:strace mysqld --basedir=/usr/local/mysql
Hengjie

Çizgim yok open(.... Bunun yerine biten 4 satırım var = -1 Err#2. Hangi dosyanın yüklendiğini nasıl anlayabilirim?
mgPePe

4
fwiiw, Mac'te strace: @mgPePe yerine dtruss kullanabilirsiniz 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.
vitaly

268

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

2
Ve listelenen son dosyanın kazandığını varsayalım?
mlissner

5
Bu garip .. Bunların hepsini ve herkesi kontrol ettim ve hepsi boş (mac'umda) .. neden herhangi bir fikir?
abbood

7
Bu, yüklü yapılandırmayı sağlamaz. yüklenebilecek oldukça olası özel yapılandırmalar
mgPePe

4
Bunun tarafından belirtilen dosyaları listeleyeceğini sanmıyorum !includedir. !includedirDosyamdaki direktifin neden çalışmadığını anlamaya /etc/mysql/my.cnfçalışıyorum.
Buttle Butkus

2
Neden mysqldtam yolla görüşmeniz gerekiyor ?!
panepeter

65

Eğer çalıştırırsanız mysql --verbose --help | less, hangi .cnfdosyaları 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.


1
+1 çünkü mysql bunu yapmanın önerilen yoludur. Windows için basit bir yol, içeriği analiz etmek isterseniz çıktıyı bir dosyaya dökmektir.
kta

Pencerelerde, bunun yerine mysql çalışma tezgahı ( stackoverflow.com/a/17953456/1504300 ) ile bulmayı başarabildiğim yerlerin bir listesini ama doğru olanı söylemedi .
reallynice

3
Değil emin önemli olması gereken, ancak kullanmak isteyebilirsiniz mysqldyerinemysql
nl-x

2
Ve hala Windows'da my.ini programının ProgramData dizininden okunduğunu deneyimliyorum ve bu, burada önerilen cevapta gösterilmiyor.
nl-x

2
Seçildi mysqld --print-defaults, bu soruyu googlederken bana tam olarak ne istediğimi verdi.
Per Lundberg

28

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


Bu MySQL 5.7 için de geçerlidir. Bu öyle C:\ProgramData\MySQL\MySQL Server 5.7\my.inivarsayılan olarak.
Ryan Shillington

18

Bir alternatif kullanmaktır

mysqladmin variables

2
Aslında cnf dosyasının değişkenlerimde nerede olduğunu söylemiyor. Şu anda MySQL 5.5.20 kullanıyorum. Ancak, bir zamanlar bunun daha önce değişkenlerde gördüğüm gibi çalıştığını söyleyebilirim. Belki 5.5'e taşındığından beri bir şeyler değişti.
Hengjie

13

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:

MySQL yapılandırma dosyası nasıl bulunur?


9

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"


4

MySQL Workbench kullanıldığında, "Sunucu Durumu" altında gösterilir: resim açıklamasını buraya girin


3

Bunu gerçekten yararlı buldum:

  1. Hizmetlerde MySQL işlemini bulun altında Control Panel -> Administration Tools
  2. Sağ tıklayın ve seçin Properties
  3. Simgesini tıklayın ve seçin Path to executablevemy.ini/my.cfg

1
Bu benim için Server 2008 kurulumunda çalıştı, teşekkürler.
delliottg

2

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

1

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-fileyapılandırma dosyanızın nerede olduğunu gösteren bir anahtara sahip olması gereken "Yürütülebilir Yol" u kontrol edebilirsiniz .


1

Mac çalıştırmanız durumunda, bu ayrıca şu şekilde de elde edilebilir:

sudo dtruss mysqld 2>&1 | grep cnf

1

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.

resim açıklamasını buraya girin

Ş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:

resim açıklamasını buraya girin

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.cnfbaşarılı bir şekilde bulundu, bu yüzden bunu kullanıyor.


Bu temel olarak pencereler için en üstteki cevaba eşdeğerdir. teşekkür ederim.
Aaron Wallentine

0

MySQL yükledim demlemek kullanın MySQL yükleyin

mysqld --verbose --help | less

Ve gösteriyor:

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.