Programing

MySQL에서 로그 파일을 보는 방법은 무엇입니까?

lottogame 2020. 6. 3. 08:01
반응형

MySQL에서 로그 파일을 보는 방법은 무엇입니까?


Mysql 서버는 언제 어떤 쿼리가 실행되는지와 같은 모든 활동의 기록을 유지하는 로그 파일을 생성한다는 것을 읽었습니다.

아무도 내 시스템에서 그것이 어디에 있는지 말해 줄 수 있습니까? 어떻게 읽을 수 있습니까?

기본적으로 다른 입력 [두 날짜 사이의 백업]으로 데이터베이스를 백업해야하므로 여기에서 로그 파일을 사용해야한다고 생각합니다. 그래서 그렇게하고 싶습니다 ...

사용자 이름 및 비밀번호와 같은 민감한 정보가 기록 될 수 있기 때문에이 로그를 어떻게 든 보호해야한다고 생각합니다 (모든 쿼리에 필요한 경우). 그래서 쉽게 볼 수없는, 안전 할 수 있습니까?

시스템에 대한 루트 액세스 권한이 있습니다. 어떻게 로그를 볼 수 있습니까?

/var/log/mysql.log를 열려고하면 비어 있습니다.

이것은 내 구성 파일입니다.

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
log = /var/log/mysql/mysql.log 
binlog-do-db=zero



user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
skip-external-locking

bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

다음은이를 활성화하는 간단한 방법입니다. mysql에서는 프로젝트 개발 중에 주로 필요한 3 개의 로그를 자주 볼 필요가 있습니다.

  • The Error Log. 서버가 실행되는 동안 발생하는 오류에 대한 정보를 포함합니다 (서버 시작 및 중지).

  • The General Query Log. 이것은 mysqld 가하고있는 일 (연결, 연결 끊기, 쿼리)에 대한 일반적인 기록입니다.

  • The Slow Query Log. "느린"SQL 문 (이름으로 표시)으로 구성됩니다.

기본적으로 MYSQL에서는 로그 파일이 활성화되어 있지 않습니다. 모든 오류는 syslog에 표시됩니다 (/ var / log / syslog).

사용하려면 아래 단계를 따르십시오.

1 단계 : 이 파일 ( /etc/mysql/conf.d/mysqld_safe_syslog.cnf )로 이동하여 해당 줄을 제거하거나 주석 처리하십시오.

2 단계 : mysql conf 파일 (/etc/mysql/my.cnf)으로 이동하여 다음 줄을 추가하십시오

오류 로그를 추가하려면 다음을 추가하십시오.

[mysqld_safe]
log_error=/var/log/mysql/mysql_error.log

[mysqld]
log_error=/var/log/mysql/mysql_error.log

일반 쿼리 로그를 활성화하려면 다음을 추가하십시오.

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

느린 쿼리 로그를 활성화하려면 다음을 추가하십시오.

log_slow_queries       = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

3 단계 : 파일을 저장하고 다음 명령을 사용하여 mysql을 다시 시작하십시오.

service mysql restart

To enable logs at runtime, login to mysql client (mysql -u root -p ) and give:

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

Finally one thing I would like to mention here is I read this from a blog. Thanks. It works for me.

Click here to visit the blog


You have to activate the query logging in mysql.

1.edit /etc/my.cnf

[mysqld]
log=/tmp/mysql.log

2.restart the computer or the mysqld service

service mysqld restart

3.open phpmyadmin/any application that uses mysql/mysql console and run a query

4.cat /tmp/mysql.log ( you should see the query )


The MySQL logs are determined by the global variables such as:

To see the settings and their location, run this shell command:

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log

To print the value of error log, run this command in the terminal:

mysql -e "SELECT @@GLOBAL.log_error"

To read content of the error log file in real time, run:

sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")

Note: Hit Control-C when finish

When general log is enabled, try:

sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")

To use mysql with the password access, add -p or -pMYPASS parameter. To to keep it remembered, you can configure it in your ~/.my.cnf, e.g.

[client]
user=root
password=root

So it'll be remembered for the next time.


In my (I have LAMP installed) /etc/mysql/my.cnf file I found following, commented lines in [mysqld] section:

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

I had to open this file as super user, with terminal:

sudo geany /etc/mysql/my.cnf

(I prefer to use Geany instead of gedit or VI, it doesn't matter)

I just uncommented them & save the file then restatt mysql with

sudo service mysql restart

Run several queries, open above file (/var/log/mysql/mysql.log) and the log was there :)


From the MySQL reference manual:

By default, all log files are created in the data directory.

Check /var/lib/mysql folder.


To complement loyola's answer it is worth mentioning that as of MySQL 5.1 log_slow_queries is deprecated and is replaced with slow-query-log

Using log_slow_queries will cause your service mysql restart or service mysql start to fail


shell> mysqladmin flush-logs


shell> mv host_name.err-old backup-directory

In addition to the answers above you can pass in command line parameters to the mysqld process for logging options instead of manually editing your conf file. For example, to enable general logging and specifiy a file:

mysqld --general-log --general-log-file=/var/log/mysql.general.log

Confirming other answers above, mysqld --help --verbose gives you the values from the conf file (so running with command line options general-log is FALSE); whereas mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log gives:

general_log     ON
general_log_file        /var/log/mysql.general.log

Use slightly more compact syntax for the error log:

mysqld --general-log --general-log-file=/var/log/mysql.general.log --log-error=/var/log/mysql.error.log

참고URL : https://stackoverflow.com/questions/5441972/how-to-see-log-files-in-mysql

반응형