Регистрация MySQL-запроса в Ubuntu - PullRequest
1 голос
/ 07 июля 2011

Мне нужно записать SQL в файл, чтобы позже я мог проверить, какой SQL запускается.

, поэтому я открыл opt/lampp/etc/my.cnf и добавил эти строки

log_slow_queries  
log_queries_not_using_indexes =1  
long_query_time = 1  
slow_query_log = 1  
slow_query_log_file = "/opt/lampp/logs/query.log"

но он не регистрировал запросы, он даже не создал файл query.log, поэтому я создал пустой файл с именем, но все равно он не работает.

Edit

[mysqld]
log_slow_queries
log_queries_not_using_indexes =1
long_query_time = 1
slow_query_log = 1
general_log = 1
slow_query_log_file = /opt/lampp/logs/query.log
general_log_file = "/opt/lampp/logs/query.log"

Ответы [ 4 ]

7 голосов
/ 07 июля 2011

Это будет регистрировать только медленные запросы.Вам нужен общий журнал, если вы хотите видеть все запросы.

general_log = 1
general_log_file = "/opt/lampp/logs/query.log"

Обратите внимание, что вам нужно будет перезапустить сервер, чтобы это вступило в силу.Кроме того, вы должны использовать этот тип журналирования только во время тестирования, так как это вызывает замедление.

Как упоминали другие пользователи, это может быть проблема с разрешениями.Сначала проверьте, какой пользователь MySQL использует как ps -u -p $(pgrep mysql).Имя пользователя будет отображаться в первом столбце под USER.В вашем случае кажется, что пользователь nobody.Вы можете просмотреть группу пользователей по умолчанию через groups nobody.Это должно напечатать что-то вроде nobody : nogroup.

Чтобы исправить разрешения для файла, просто запустите chown nobody:nogroup /opt/lampp/logs/query.log.

2 голосов
/ 07 июля 2011

Не забудьте дать правильное разрешение:

chown mysql:mysql filename 

также, когда я последний раз делал это, мне пришлось перезапустить службу mysql:

service mysqld restart
1 голос
/ 26 сентября 2013

Это будет регистрировать только медленные запросы. Вам нужен общий журнал, если вы хотите видеть все запросы.

general_log = 1
general_log_file = "/opt/lampp/logs/query.log"

Обратите внимание, что вам нужно будет перезагрузить сервер, чтобы это вступило в силу. Кроме того, вы должны использовать этот тип журналирования только во время тестирования, так как это вызывает замедление.

Также обратите внимание, что mysql также требует разрешения для папки, в моем случае я изменил:
general_log_file = "/opt/lampp/logs/query.log"
для
general_log_file = "/var/log/mysql/query.log"
Но у меня установлен mysql из центра программного обеспечения, без lampp, когда я выполняю ls -l над / var / log /, он показывает
drwx------ 8 mysql mysql 4096 sep 25 23:22 mysql


PD: я изменяю файл my.cn и перезапускаю mysql, не создавая файл query.log по указанному пути, mysql автоматически создает его

1 голос
/ 07 июля 2011

Возможно, у процесса нет разрешения на запись в этот каталог.Убедитесь, что у MySQL есть разрешение на запись туда, или попробуйте войти в систему где-то менее ограниченным.

...