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.
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 itu Anda dapat melihat bahwa datadir saya /opt/local/var/db/mysql
(karena saya menginstal melalui MacPorts). Mari kita mengambil pelajaran ini sedikit lebih jauh ...
Dari baris pertama Anda dapat melihat dasmon saya /opt/local/libexec/mysqld
. The mysqld
bisa disebut dengan --verbose --help
untuk mendapatkan daftar semua opsi baris perintah (dan di sini adalah / bagian yang berharga penting!) Diikuti oleh nilai-nilai yang akan digunakan jika Anda meluncurkan mysqld bukan hanya memeriksa bantuan output. Nilai adalah hasil dari konfigurasi waktu kompilasi, 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 selesaikan semuanya dan menjadikan 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.
mysqladmin variables
sekarang perintah yang disukai untuk mendapatkan nilai saat ini daripada langsung menggunakanmysqld
Ada 3 jenis log MySQL / MariaDB:
log_error
untuk log pesan kesalahan;general_log_file
untuk file log kueri umum (jika diaktifkan olehgeneral_log
);slow_query_log_file
untuk file log kueri lambat (jika diaktifkan olehslow_query_log
);Periksa pengaturan dan lokasi log di atas dengan perintah shell ini:
Secara default, log disimpan di dir data Anda, jadi periksa lokasi dengan perintah shell ini:
Untuk melihat log kesalahan Anda, Anda dapat menjalankan:
Jika Anda sudah mengaktifkan log umum, untuk melihatnya, jalankan:
sumber
Cara lain untuk menemukan informasi ini adalah menggunakan
lsof
.Gunakan Monitor Aktivitas untuk menemukan PID
mysql
, atau gunakanps -ef | grep mysqld
untuk menemukannya.sudo lsof -p PID_OF_MYSQLD
dan lihat file mana yang telah dibuka MySQL.sumber
Butuh waktu beberapa saat untuk menemukan ini ... coba lokasi ini: '
sumber
/usr/local/var/mysql/<USERNAME>.local.err
Sumber: Dokumentasi MySQL
Anda dapat menggunakan
mysqlbinlog
untuk membaca file log biner di / usr / local / mysql / data / (dalam instalasi saya tidak semua biner). Beberapa kesalahan hanya diarahkan ke stderr sehingga Anda mungkin ingin memeriksanya/var/log/system.log
juga.sumber
Folder yang menyimpan log itu mungkin tidak dapat diakses oleh Anda tanpa menggunakan
sudo
:Jika Anda menemukan file log besar dan ketika Anda menggunakan Time Machine, Anda mungkin ingin membaca Apa yang dilakukan Time Machine? pada Kesalahan Server.
sumber
Secara default, semua file log dibuat di direktori data mysqld. Sayangnya, banyak orang tidak meletakkan file log mereka (dan program) di lokasi khas mereka. Saya salah satu dari mereka!
Saya melalui rutinitas ini sendiri dengan MySQL sampai saya mencoba Navicat untuk MySQL . Kemudian saya meningkatkan 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
Anda juga dapat mengatur variabel di sana dalam daftar.
Tepuk tangan!
sumber
/Library/Logs/MySQL.log
sumber