Bagaimana cara mengaktifkan logging MySQL?

36

Saya menjalankan MySQL 5.0.45 pada OS X 10.6.1 dan saya tidak bisa membuat MySQL untuk login apa pun. Saya men-debug aplikasi dan perlu melihat semua pertanyaan dan kesalahan.

Saya menambahkan ke etc / my.cnf:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

Saya menggunakan sudo untuk membuat dua file log, mengatur izin ke 644, lalu me-restart MySQL.

Saya merujuk ke Mana log mysql saya di OS X? untuk memecahkan masalah.

Berlari:

ps auxww|grep [m]ysqld

Pengembalian:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

Dan berlari:

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

Pengembalian:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.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

Berlari:

mysql> show variables like '%log%';

Pengembalian:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

Adakah bantuan tentang bagaimana saya bisa membuat MySQL untuk login?

RyOnLife
sumber

Jawaban:

23

Meskipun Anda menggunakan chmod 644, pastikan mysql adalah pemilik log.

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

Selanjutnya, restart mysqld.

Kemudian, masuk ke mysql dan jalankan:

mysql> show variables like '%log%';

Melihat nilai-nilai untuk general_log, general_log_file, log, log_error, dll

Aktifkan sesuai kebutuhan dan jalankan flushlog mysqladmin sesuai kebutuhan.

randomx
sumber
Sekarang sedang login. Pasti pengawasan kepemilikan. Meskipun demikian, lihat pertanyaan saya yang diedit untuk hasil "tampilkan variabel seperti permintaan '% log%'". MySQL sedang masuk ke /var/log/mysql.log, jadi mengapa tidak ditampilkan?
RyOnLife
13

Untuk mengaktifkan file log, Anda perlu memastikan bahwa satu atau lebih arahan berikut ada di [mysqld]bagian file konfigurasi utama server mysql Anda ( /etc/my.cnfdi tambang):

[mysqld]
log-bin
log
log-error
log-slow-queries

Log akan dibuat, secara default, di direktori data yang sama yang menyimpan subdirektori database sendiri (biasanya /var/lib/mysql) dan nama file log default ke nama host diikuti dengan akhiran yang cocok dengan nama direktif di atas (mis. -Bin, -slow -pertanyaan, dll).

Untuk menyimpan log Anda di jalur yang berbeda, atau menggunakan nama file yang berbeda, tentukan nama dasar mengikuti log=arahan, dan setiap jalur dan nama file yang Anda suka misalnya:

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

Anda harus memulai ulang mysqld agar perubahan ini berlaku.

gigawatt
sumber
5

Jawaban sebelumnya sudah usang. Anda dapat melihat file konfigurasi di /etc/my.cnfatau di windows ./mysql/my.ini.

Di [mysqld]bagian add

log_bin
general_log
log_error

Dokumentasi untuk windows menyatakan bahwa log disimpan ProgramData/MySQL/MySQL Server 5.6/. Abaikan saja karena itu bohong.

Selain itu logopsi yang disarankan didepresiasi dan mengakibatkan kesalahan

ambiguous option '--log' (log-bin, log_slave_updates)

sedang login ./mysql/data/host.errdan daemon diam-diam sekarat. Pengaturan yang benar adalah general-log.

Juga log-slow-queriestidak valid dan menyebabkan kesalahan

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

Jadi pastikan untuk menjauh dari itu juga.

pengguna3338098
sumber
Terima kasih! Saya tidak bisa memulai server dengan log=opsi dan bisa seumur hidup saya mencari tahu mengapa. Akhirnya seseorang dengan jawaban. general-log
jiveturkey
2

Masukkan baris perintah mysql dengan hak istimewa super dan lakukan:

SET GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

Dalam kasus saya, tidak masalah jika saya sudah menetapkan variabel ini dengan nilai yang sama! Juga, saya mengubah izin dan pemilik file seperti yang disebutkan dalam posting lain.

Lucia
sumber
1

Coba pengaturan log yang berbeda di my.cnf. Dalam kasus saya, saya perlu:

general_log = on

general_log_file=/var/log/mysql/mysql.log
sinar
sumber