Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để ghi lại các truy vấn thô trong MySQL?

Để bật Truy vấn nhật ký đầy đủ, hãy thêm phần sau vào my.cnf của bạn:

log=/var/log/mysqldquery.log

Ở trên sẽ ghi lại tất cả các truy vấn vào tệp nhật ký.

Đừng quên khởi động lại dịch vụ mysql sau khi thực hiện các thay đổi trong tệp my.cnf.

Ví dụ đầu ra từ các hành động thông qua SequelPro (máy khách mac):

090721 11:06:45      51 Query       ALTER TABLE `test` ADD `name` varchar(10) DEFAULT NULL
                     51 Query       SHOW COLUMNS FROM `test`
                     51 Query       SHOW INDEX FROM `test`
090721 11:06:57      51 Query       SHOW COLUMNS FROM `test`
                     51 Query       UPDATE `test` SET `id`='1', `name`='test' WHERE `id` = '1' AND `name` IS NULL LIMIT 1
                     51 Query       SELECT * FROM `test` LIMIT 0,100
                     51 Query       SELECT COUNT(1) FROM `test`   
090721 11:07:00      51 Query       UPDATE `test` SET `id`='2', `name`='test' WHERE `id` = '2' AND `name` IS NULL LIMIT 1
                     51 Query       SELECT * FROM `test` LIMIT 0,100
                     51 Query       SELECT COUNT(1) FROM `test`

Trên hệ thống dựa trên * NIX, bạn có thể sử dụng grep để bắt đầu

grep 'SELECT\|INSERT\|UPDATE' querylog.log

Hoặc phức tạp hơn và bắt đầu làm những việc như:

grep 'SELECT\|INSERT\|UPDATE' querylog.log | awk '{$1="";$2="";print}'

Điều này sẽ cung cấp cho bạn một cái gì đó giống như thế này, không hoàn hảo nhưng gần gũi hơn:

  51 Query UPDATE `test` SET `id`='2', `name`='test' WHERE `id` = '2' AND `name` IS NULL LIMIT 1
  SELECT * FROM `test` LIMIT 0,100
  SELECT COUNT(1) FROM `test`
  51 Query INSERT INTO `test` (`id`,`name`) VALUES ('3','testing')
  SELECT * FROM `test` LIMIT 0,100
  SELECT COUNT(1) FROM `test`


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhiều tùy chọn hộp kiểm được lưu trữ vào một trường duy nhất trong cơ sở dữ liệu

  2. Làm thế nào để lấy danh sách các vùng ngoại ô xung quanh một vị trí sau đó lặp lại cho các vị trí khác bằng MySql?

  3. Khôi phục mật khẩu gốc MySQL

  4. Làm cách nào để thực hiện Lời nhắc mật khẩu khôi phục và thay đổi trường email Người dùng thành trường tên người dùng với Laravel 5.0?

  5. Mysqli_real_escape_string có đủ để tránh SQL injection hoặc các cuộc tấn công SQL khác không?