atau tempatkan yang berikut ini di my.cnffile Anda :
log = log_file_name
Salah satu akan mencatat semua permintaan ke log_file_name.
Anda juga dapat mencatat hanya permintaan yang lambat menggunakan --log-slow-queriesopsi --log. Secara default, kueri yang memakan waktu 10 detik atau lebih lama dianggap lambat, Anda dapat mengubahnya dengan mengatur long_query_timeke jumlah detik yang harus dijalankan oleh kueri sebelum dicatat.
Itu harus pergi tanpa berkata, tetapi meninggalkan ini dihidupkan dalam kotak produksi akhirnya menjadi tidak menghibur dengan sangat cepat. g
ceejayoz
6
Jika Anda mengalami kesulitan mengaktifkan pencatatan dengan cara ini, periksa dua kali lipat bahwa pengguna mysql dapat menulis ke lokasi file yang sesuai.
Jon Topper
3
Apakah mungkin untuk mencatat hanya 1 partikel db / tabel?
Temujin
2
@Temujin phpmyadmin kini memiliki opsi 'pelacakan' untuk tabel tempat Anda menentukan log ('versi') dan itu akan menyimpan catatan pertanyaan yang memengaruhinya dengan informasi tentang waktu dan seluruh permintaan.
gadget00
3
Jawaban yang diterima ini harus dihapus atau diedit untuk mencerminkan fakta bahwa itu tidak berfungsi dengan MySQL 5.6. +.
itoctopus
233
( Catatan : Untuk mysql-5.6 + ini tidak akan berfungsi. Ada solusi yang berlaku untuk mysql-5.6 + jika Anda gulir ke bawah atau klik di sini .)
Jika Anda tidak ingin atau tidak dapat memulai kembali server MySQL, Anda dapat melanjutkan seperti ini di server Anda yang sedang berjalan:
Saya tidak yakin apakah ini benar untuk setiap versi MySQL (Saya menggunakan 5.5), tetapi saya tidak harus membuat tabel. Saya mengikuti saran yang sama dikurangi membuat tabel, yang disebutkan di sini: stackoverflow.com/a/678310/135101
Tyler Collier
Mungkin itu sudah dibuat karena satu atau lain alasan, @TylerCollier
Alexandre Marcondes
3
Perlu dicatat bahwa CREATE TABLEperintah harus (jika tabel belum ada) dieksekusi pada mysqldatabase, bukan pada database yang dibuat pengguna. Mungkin pernyataan SQL dapat diperbarui untuk mencerminkan hal itu.
Robert Rossmann
2
Untuk melihat log SELECT * FROM mysql.general_log order by (event_time) descakan lebih baik. hanya mengatakan. :-)
vinrav
Jangan setuju dengan catatan - dengan versi server 5.6.37 berfungsi sepenuhnya dengan benar. Terima kasih.
Dmitriy Olhovsky
215
Selain apa yang saya temui di sini, menjalankan berikut ini adalah cara paling sederhana untuk membuang kueri ke file log tanpa memulai ulang
SET global log_output ='FILE';SET global general_log_file='/Applications/MAMP/logs/mysql_general.log';SET global general_log =1;
Benar-benar menyukai ini, berfungsi untuk koneksi yang ada dan yang baru di DB
Carlton
1
Ada beberapa entri Statistik - tidak yakin apa itu tetapi, jika tidak, berfungsi dengan sangat baik.
Snowcrash
Agar ini berfungsi, pengguna Anda harus memiliki hak SUPER yang merupakan hak istimewa DB global dan karenanya tidak dapat terbatas pada skema atau tabel tertentu:GRANT SUPER ON *.* TO user1@localhost
RobM
Saya akan memperbaikinya lebih dari sekali jika saya bisa, saya punya bookmark yang menunjuk ke sini :) Terima kasih banyak!
resi
125
Jawaban teratas tidak berfungsi di mysql 5.6+. Gunakan ini sebagai gantinya:
Ubuntu / Debian : /etc/mysql/my.cnf Windows : c: \ ProgramData \ MySQL \ MySQL Server 5.x wamp : c: \ wamp \ bin \ mysql \ mysqlx.yz \ my.ini xampp : c: \ xampp \ mysql \ bin \ my.ini.
Saya tidak mengerti mengapa Mysql 5.6 tidak mengizinkan file log disetel dari kueri? Bagaimana cara mencatat semua permintaan di MySQL 5.6 dan yang lebih baru ketika Anda tidak memiliki akses ke pohon direktori server tetapi hanya phpMyAdmin?
Vicky Dev
restart layanan mysql dari panel kontrol xampp setelah perubahan ini.
Paramjeet
Ini bekerja untuk saya di lingkungan Apache Xampp lokal saya, tetapi saya masih harus mengaktifkan logging via phpMyAdmin. Juga, itu tidak dapat menemukan file di folder / usr / log, juga tidak akan membuatnya, tapi itu berfungsi dengan baikgeneral_log_file=filename.log
JoeP
36
Aktifkan log untuk tabel
mysql>SET GLOBAL general_log ='ON';
mysql>SET global log_output ='table';
5.2.1. Memilih Tujuan Umum dan Tujuan Output Log Kueri Lambat
Pada MySQL 5.1.6, MySQL Server menyediakan kontrol fleksibel atas tujuan output ke log kueri umum dan log kueri lambat, jika log tersebut diaktifkan. Tujuan yang mungkin untuk entri log adalah file log atau tabel general_log dan slow_log dalam database mysql
$ uname -a
Darwin Raphaels-MacBook-Pro.local 15.6.0 Darwin Kernel Version 15.6.0: Thu Jun 2120:07:40 PDT 2018; root:xnu-3248.73.11~1/RELEASE_X86_64 x86_64
$ mysql --version/usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.6.23,for osx10.8(x86_64)using EditLine wrapper
Menambahkan pencatatan (contoh, saya pikir /var/log/...ini bukan jalur terbaik di Mac OS tetapi berhasil:
sudo vi ./usr/local/mysql-5.6.23-osx10.8-x86_64/my.cnf
[mysqld]
general_log =on
general_log_file=/var/log/mysql/mysqld_general.log
Restart Mysql
Hasil:
$ sudo tail -f /var/log/mysql/mysqld_general.log
1812109:41:0421Connect root@localhost on employees
21 Query /* mysql-connector-java-5.1.47 ( Revision: fe1903b1ecb4a96a917f7ed3190d80c049b1de29 ) */SELECT@@session.auto_increment_increment AS auto_increment_increment,@@character_set_client AS character_set_client,@@character_set_connection AS character_set_connection,@@character_set_results AS character_set_results,@@character_set_server AS character_set_server,@@collation_server AS collation_server,@@collation_connection AS collation_connection,@@init_connect AS init_connect,@@interactive_timeout AS interactive_timeout,@@license AS license,@@lower_case_table_names AS lower_case_table_names,@@max_allowed_packet AS max_allowed_packet,@@net_buffer_length AS net_buffer_length,@@net_write_timeout AS net_write_timeout,@@query_cache_size AS query_cache_size,@@query_cache_type AS query_cache_type,@@sql_mode AS sql_mode,@@system_time_zone AS system_time_zone,@@time_zone AS time_zone,@@tx_isolation AS transaction_isolation,@@wait_timeout AS wait_timeout
21 Query SET NAMES latin1
21 Query SET character_set_results =NULL21 Query SET autocommit=121 Query SELECTUSER()21 Query SELECTUSER()1812109:41:1021 Query show tables
1812109:41:2521 Query select count(*)from current_dept_emp
Jawaban:
Mulai mysql dengan opsi --log:
atau tempatkan yang berikut ini di
my.cnf
file Anda :Salah satu akan mencatat semua permintaan ke log_file_name.
Anda juga dapat mencatat hanya permintaan yang lambat menggunakan
--log-slow-queries
opsi--log
. Secara default, kueri yang memakan waktu 10 detik atau lebih lama dianggap lambat, Anda dapat mengubahnya dengan mengaturlong_query_time
ke jumlah detik yang harus dijalankan oleh kueri sebelum dicatat.sumber
( Catatan : Untuk mysql-5.6 + ini tidak akan berfungsi. Ada solusi yang berlaku untuk mysql-5.6 + jika Anda gulir ke bawah atau klik di sini .)
Jika Anda tidak ingin atau tidak dapat memulai kembali server MySQL, Anda dapat melanjutkan seperti ini di server Anda yang sedang berjalan:
mysql
databasesumber
CREATE TABLE
perintah harus (jika tabel belum ada) dieksekusi padamysql
database, bukan pada database yang dibuat pengguna. Mungkin pernyataan SQL dapat diperbarui untuk mencerminkan hal itu.SELECT * FROM mysql.general_log order by (event_time) desc
akan lebih baik. hanya mengatakan. :-)Selain apa yang saya temui di sini, menjalankan berikut ini adalah cara paling sederhana untuk membuang kueri ke file log tanpa memulai ulang
dapat dimatikan dengan
sumber
GRANT SUPER ON *.* TO user1@localhost
Jawaban teratas tidak berfungsi di mysql 5.6+. Gunakan ini sebagai gantinya:
di file my.cnf / my.ini Anda
Ubuntu / Debian : /etc/mysql/my.cnf
Windows : c: \ ProgramData \ MySQL \ MySQL Server 5.x
wamp : c: \ wamp \ bin \ mysql \ mysqlx.yz \ my.ini
xampp : c: \ xampp \ mysql \ bin \ my.ini.
sumber
phpMyAdmin
?general_log_file=filename.log
Aktifkan log untuk tabel
Lihat log dengan kueri pemilihan
sumber
Cara cepat untuk mengaktifkan MySQL General Query Log tanpa memulai ulang.
Saya telah menginstal mysql melalui homebrew, versi mysql: mysql Ver 14.14 Distrib 5.7.15, untuk osx10.11 (x86_64) menggunakan EditLine wrapper
sumber
Sebagai catatan, general_log dan slow_log diperkenalkan pada 5.1.6:
http://dev.mysql.com/doc/refman/5.1/en/log-destinations.html
sumber
Anda harus menyadari bahwa login mysql benar-benar berdampak pada kinerja, tetapi itu bisa menjadi hal yang bijaksana untuk dilakukan.
Saya biasanya membiarkannya di server dev (kecuali ketika itu membuat kita gila :))
sumber
Versi OS / mysql:
Menambahkan pencatatan (contoh, saya pikir
/var/log/...
ini bukan jalur terbaik di Mac OS tetapi berhasil:Restart Mysql
Hasil:
sumber
Jika menggunakan AWS RDS MYSQL, panduan langkah demi langkah di sini.
Ketika ditetapkan sebagai output 'file' Anda dapat melihat log langsung dari AWS RDS "Log" Console.
AWS RDS MYSQL Logging
sumber