pengembangan-web-mp.com

Di mana log mysql saya di OS X?

Saya memeriksa/var/log dan/usr/local/mysql dan sepertinya saya tidak dapat menemukan log. Saya mencoba memecahkan masalah saat membuat koneksi database dengan fungsi php.

74
Tony

Seperti yang disebutkan Chealion, ada beberapa cara yang bisa diinstal mysql Anda. Masing-masing akan menempatkan data dir dan/atau log Anda di lokasi yang berbeda. Perintah berikut akan memberi Anda (dan kami) indikasi yang baik tentang ke mana harus mencari.

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

Bisakah Anda memposting hasil dari perintah itu di sini? Milik saya terlihat seperti ini:

_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

Dari situ Anda bisa melihat bahwa data saya adalah /opt/local/var/db/mysql (karena saya menginstal melalui MacPorts). Mari kita ambil pelajaran ini sedikit lebih jauh ...

Dari baris pertama Anda dapat melihat daemon saya adalah /opt/local/libexec/mysqld. mysqld dapat dipanggil dengan --verbose --help untuk mendapatkan daftar semua opsi baris perintah (dan di sini adalah bagian penting/berharga!) diikuti oleh nilai-nilai yang akan digunakan jika Anda meluncurkan mysqld alih-alih hanya memeriksa output bantuan. Nilai-nilai ini adalah hasil dari konfigurasi waktu kompilasi Anda, my.cnf file, dan opsi baris perintah apa pun. Saya dapat memanfaatkan fitur ini untuk mencari tahu PERSIS di mana file-file log saya, seperti:

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

Milik saya terlihat seperti ini:

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 DAN MELIHAT! semua saran di dunia tidak akan membantu saya karena file log saya disimpan di lokasi yang sepenuhnya tidak standar! Saya menyimpan milik saya /tmp/ karena di laptop saya, saya tidak peduli (sebenarnya saya lebih suka) kehilangan semua log saya saat reboot.

Mari kita kumpulkan semuanya dan jadikan Anda oneliner:

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

Jalankan perintah itu dan Anda akan mendapatkan daftar semua log untuk instance mysql Anda yang sedang berjalan.

Nikmati!

Bash-Fu ini dibawakan kepada Anda secara gratis oleh komitmen saya untuk semua hal Open Source.

94
Bruno Bronosky

Ada 3 jenis log MySQL/MariaDB:

Periksa pengaturan dan lokasi log di atas dengan perintah Shell ini:

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

Secara default, log disimpan di dir data Anda, jadi periksa lokasi dengan perintah Shell ini:

mysql -se "SELECT @@datadir"

Untuk melihat log kesalahan Anda, Anda dapat menjalankan:

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

Jika Anda sudah mengaktifkan log umum, untuk melihatnya, jalankan:

Sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
13
kenorb

Cara lain untuk menemukan informasi ini adalah dengan menggunakan lsof.

  1. Gunakan Monitor Aktivitas untuk menemukan PID mysql, atau gunakan ps -ef | grep mysqld untuk menemukannya.

  2. Sudo lsof -p PID_OF_MYSQLD dan lihat file mana yang telah dibuka MySQL.

10
tobym

Butuh waktu sendiri untuk menemukan ini ... coba lokasi ini: '

Sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
6
Mark Shust

Secara default, semua file log dibuat di direktori data mysqld.

Sumber: Dokumentasi MySQL

Anda dapat menggunakan mysqlbinlog untuk membaca file log biner di/usr/local/mysql/data/(dalam instalasi saya tidak semuanya biner). Beberapa kesalahan hanya diarahkan ke stderr sehingga Anda mungkin ingin memeriksa /var/log/system.log demikian juga.

3
Chealion

Folder yang menyimpan log itu mungkin tidak dapat diakses oleh Anda tanpa menggunakan Sudo:

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

Jika Anda menemukan file log besar dan ketika Anda menggunakan Time Machine, Anda mungkin ingin membaca Apa yang Time Machine lakukan? pada Server Fault.

0
Arjan

Secara default, semua file log dibuat di direktori data mysqld. Sayangnya, banyak orang tidak meletakkan file log (dan program) mereka di lokasi tipikal mereka. Saya salah satu dari mereka!

Saya melalui rutinitas ini sendiri dengan MySQL sampai saya mencoba Navicat untuk MySQL . Kemudian saya memutakhirkan ke Navicat Premium . Keduanya memiliki alat Pemantauan yang berisi tab dengan semua variabel server dalam satu daftar lengkap. Berikut screenshot dengan variabel server log_error:

variabel server log_error di Alat Pemantau Server Navicat

log_error server variable in Navicat Server Monitoring Tool

Anda juga dapat mengatur variabel di sana dalam daftar.

Bersulang!

0
Rob Gravelle