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:
log_error
for the error message log;general_log_file
for the general query log file (if enabled bygeneral_log
);slow_query_log_file
for the slow query log file (if enabled byslow_query_log
);
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
'Programing' 카테고리의 다른 글
HTML5 텍스트 영역 자리 표시자가 나타나지 않음 (0) | 2020.06.04 |
---|---|
파이썬 메모리 누수 (0) | 2020.06.03 |
개정 할 항목 업데이트 및 개정으로 되돌리기 (0) | 2020.06.03 |
customErrors와 httpErrors의 차이점은 무엇입니까? (0) | 2020.06.03 |
.NET에서 ApplicationException은 무엇입니까? (0) | 2020.06.03 |