OS X'te MySQL günlüğüm nerede?


74

/ Var / log ve / usr / local / mysql kontrol ettim ve günlüğü bulamıyorum. Bir php işlevi ile bir veritabanı bağlantısı kurulurken bir hata gidermeye çalışıyorum.

Yanıtlar:


95

Chealion'un belirttiği gibi, mysql'nizin kurulu olabileceği birkaç yol var. Her biri verilerini dir ve / veya günlüklerini farklı yerlere yerleştirecek. Aşağıdaki komut size (ve bize) nereye bakılacağına dair iyi bir gösterge verecektir.

ps auxww|grep [m]ysqld

# Putting brackets around the first char is a `grep`+`ps` trick
# to keep it from matching its own process.
# Note: For zsh compatibility put quotes around the grep regex

Bu komutun sonucunu buraya yazabilir misiniz? Benimki şuna benziyor:

_mysql     101   0.0  0.3   112104  13268   ??  S    12:30AM   0:13.20 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql --user=mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
root        76   0.0  0.0   600172    688   ??  S    12:30AM   0:00.02 /bin/sh /opt/local/lib/mysql/bin/mysqld_safe --datadir=/opt/local/var/db/mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid

Bundan, datadir'imin /opt/local/var/db/mysql(MacPorts aracılığıyla kurduğum için) olduğunu görebilirsiniz. Bu dersi biraz daha alalım ...

İlk satırdan daemonumu görebilirsiniz /opt/local/libexec/mysqld. mysqldİle çağrılabilir --verbose --helptüm komut satırı seçeneklerinin bir listesini almak için (ve burada önemli / değerli parçasıdır!) Eğer mysqld başlatılması yerine sadece yardım çıkışını kontrol olsaydı kullanılacak değerleri ile izlenmektedir. Değerler, derleme zamanı yapılandırmanızın, my.cnfdosyanızın ve komut satırı seçeneklerinin sonucudur . Kütük dosyalarımın nerede olduğunu bulmak için KESİNLİKLE bu özelliği kullanabilirim:

/opt/local/libexec/mysqld --verbose --help|grep '^log'

Benimki şuna benziyor:

log                               /tmp/mysql.log
log-bin                           /tmp/mysql-bin
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /tmp/mysql.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

LO VE BEHOLD! Dünyadaki tüm tavsiyeler bana yardımcı olmayacaktı çünkü günlük dosyam tamamen standart olmayan bir konumda tutuluyor! Benimkini içeride tutuyorum, /tmp/çünkü dizüstü bilgisayarımda, yeniden başlatma sırasında tüm günlüklerimi kaybetmek umrumda değil (aslında tercih ederim).

Hepsini bir araya getirelim ve sizi oneliner yapalım:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

Bir komutu çalıştırdığınızda, çalışan mysql örneğiniz için tüm logların bir listesini göreceksiniz.

Keyfini çıkarın!

Bu Bash-Fu size Açık Kaynak olan her şeye bağlılığımla ücretsiz olarak getirdi.


2
mysqladmin variablesşimdi doğrudan kullanmak yerine geçerli değeri elde etmek için tercih edilen komutmysqld
John Cummings

@JohnCummings, Kaynak?
Pacerier

Bugün yorum yapmayan aşağı oy aldım. Tüm cevaplarımı saklıyorum. 10 yaşında olanlar bile. Aşağı oy kullanarak kimseye yardım etmiyorsun. Yorum Yap!
Bruno Bronosky

@ jm3 özen göstermek? Artık MacOS'a erişimim yok.
Bruno Bronosky 27:18

12

3 tip MySQL / MariaDB günlüğü vardır:

Bu kabuk komutuyla yukarıdaki günlüklerin ayarlarını ve konumunu kontrol edin:

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log

Varsayılan olarak günlükler veri dizininizde saklanır, bu nedenle bu kabuk komutuyla konumu kontrol edin:

mysql -se "SELECT @@datadir"

Hata günlüğünüzü görüntülemek için çalıştırabilirsiniz:

sudo tail -f $(mysql -Nse "SELECT @@log_error")

Genel işlem kaydını etkinleştirdiyseniz, görüntülemek için aşağıdakileri çalıştırın:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")

10

Bu bilgiyi bulmanın başka bir yolu kullanmaktır lsof.

  1. PID'sini bulmak için Activity Monitor kullanın mysqlveya ps -ef | grep mysqldbulmak için kullanın .

  2. sudo lsof -p PID_OF_MYSQLD ve MySQL'in hangi dosyaları açtığını görün.


6

Bunu bulmak biraz zaman aldı ... bu yeri dene: '

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err

3
Mine /usr/local/var/mysql/<USERNAME>.local.err
içerideydi

3

Varsayılan olarak, tüm günlük dosyaları mysqld veri dizininde oluşturulur.

Kaynak: MySQL Belgeleri

mysqlbinlog/ Usr / local / mysql / data / içindeki ikili günlük dosyalarını okumak için kullanabilirsiniz (kurulumumda hepsi ikili değildi). Bazı hatalar basitçe stderr'a yönlendirilir, bu yüzden de kontrol etmek isteyebilirsiniz /var/log/system.log.


MySQL dizininde bir veri dizini yok. / usr / local / mysql / dizinine baktım ve günlüğü bulamıyorum. MySQL yapılandırmasını görüntülemek için bir yolu yoktur? Bir phpinfo () gibi
Tony

MySQL'i nasıl yüklediniz? Mac OS X Sunucusu, MacPorts veya resmi MySQL paketi ile önceden yüklenmiş MySQL?
Chealion

0

Bu günlüğü tutan klasör, kullanmadan size erişemeyebilir sudo:

sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x---   4 _mysql  wheel    136 Jul 10 23:06 data

Büyük bir günlük dosyası bulursanız ve Time Machine kullanırken , Time Machine'in ne yaptığını okumak isteyebilirsiniz. Sunucu Arızasında.


/ usr / local / mysql dizininde veri yok
Tony

0

Varsayılan olarak, tüm günlük dosyaları mysqld veri dizininde oluşturulur. Ne yazık ki, birçok kişi günlük dosyalarını (ve programlarını) tipik konumlarına koymaz. Onlardan biriyim!

MySQL için Navicat'ı deneyinceye kadar bu rutinin içinden MySQL ile geçtim . Daha sonra Navicat Premium'a yükselttim . Her ikisi de tek bir kapsamlı listedeki tüm sunucu değişkenleriyle bir sekme içeren bir İzleme aracına sahiptir. İşte log_error sunucusu değişkenine sahip bir ekran görüntüsü:

Navicat Server Monitoring Tool'da log_error sunucusu değişkeni

Navicat Server Monitoring Tool'da log_error sunucusu değişkeni

Değişkenleri de tam burada listede ayarlayabilirsiniz.

Şerefe!


-2

/Library/Logs/MySQL.log


orada başka kütükler görüyorum, ama mysql değil
Tony,

Bu Mac OS X Server'ın hangi sürümü? Genel olarak, / var / log / & / Library / Logs / içinde Mac OS X Sunucusu altında bakmak istersiniz. Bu konuya daha spesifik olarak, /var/log/system.log dosyasını izleyin, / var / mysql'de (.err günlük dosyaları gibi) kullanımda bir şey olabilir, ancak ben (Leopard Server'ın varsayılan yapılandırmasında) daha önce belirtilen / Kütüphane / Kayıtlar / MySQL.log. Soket veya bir ağ bağlantısı üzerinden bağlanmaya mı çalışıyorsunuz? İkincisi, Sunucu Yöneticisi’nde "Ağ bağlantılarını etkinleştir" mi (Leopard’da; Tiger’da / Applications / Utilities’ta ayrı bir uygulama) oldu mu?
morgant
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.