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
런타임에 로그를 활성화하려면 mysql 클라이언트 ( mysql -u root -p
)에 로그인하여 다음을 제공하십시오.
SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';
마지막으로 여기서 언급하고 싶은 것은 블로그에서 읽은 것입니다 . 감사. 그것은 나를 위해 작동합니다.
답변
mysql에서 쿼리 로깅을 활성화해야합니다.
-
/etc/my.cnf 편집
[mysqld] log = / tmp / mysql.log
-
컴퓨터 또는 mysqld 서비스를 재시작하십시오
서비스 mysqld 재시작
-
mysql / mysql 콘솔을 사용하는 phpmyadmin / any 응용 프로그램을 열고 쿼리를 실행하십시오
-
cat /tmp/mysql.log
(당신은 쿼리를 볼 수 있습니다)
답변
MySQL 로그는 다음과 같은 전역 변수에 의해 결정됩니다.
log_error
오류 메시지 로그general_log_file
일반 쿼리 로그 파일 (에 의해 활성화 된 경우general_log
);slow_query_log_file
느린 쿼리 로그 파일의 경우 (에 의해 활성화 된 경우slow_query_log
);
설정과 위치를 보려면 다음 셸 명령을 실행하십시오.
mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log
오류 로그 값을 인쇄하려면 터미널에서 다음 명령을 실행하십시오.
mysql -e "SELECT @@GLOBAL.log_error"
오류 로그 파일의 내용을 실시간으로 읽으려면 다음을 실행하십시오.
sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")
참고 : 조회 Control– C완료시
일반 로그가 활성화되면 다음을 시도하십시오.
sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
mysql
비밀번호 액세스와 함께 사용하려면 -p
또는 -pMYPASS
매개 변수를 추가하십시오 . 기억하기 위해 ~/.my.cnf
예를 들어
[client]
user=root
password=root
다음에 기억 될 것입니다.
답변
내 (LAMP가 설치되어 있음) / etc / mysql /my.cnf 파일에서 다음을 발견했습니다. [mysqld] 섹션에서 행을 주석 처리했습니다.
general_log_file = /var/log/mysql/mysql.log
general_log = 1
터미널을 사용 하여이 파일을 슈퍼 유저로 열어야했습니다.
sudo geany /etc/mysql/my.cnf
(gedit 또는 VI 대신 Geany를 사용하는 것을 선호하지만 중요하지 않습니다)
방금 주석 처리를 해제하고 파일을 저장 한 다음 mysql을 restatt
sudo service mysql restart
여러 쿼리를 실행하고 위의 파일 (/var/log/mysql/mysql.log)을 열고 로그가 있습니다 🙂
답변
MySQL 참조 매뉴얼에서 :
기본적으로 모든 로그 파일은 데이터 디렉토리에 작성됩니다.
/var/lib/mysql
폴더를 확인하십시오 .
답변
loyola 의 답변 을 보완하기 위해 MySQL 5.1부터는 log_slow_queries
더 이상 사용되지 않으며 다음과 같이 대체됩니다.slow-query-log
사용 log_slow_queries
하면 service mysql restart
또는 service mysql start
실패 할 수 있습니다
답변
shell> mysqladmin flush-logs
shell> mv host_name.err-old backup-directory
