[mysql] 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

런타임에 로그를 활성화하려면 mysql 클라이언트 ( mysql -u root -p)에 로그인하여 다음을 제공하십시오.

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

마지막으로 여기서 언급하고 싶은 것은 블로그에서 읽은 것입니다 . 감사. 그것은 나를 위해 작동합니다.

블로그를 방문 하려면 여기 를 클릭 하십시오


답변

mysql에서 쿼리 로깅을 활성화해야합니다.

  1. /etc/my.cnf 편집

    [mysqld]
    log = / tmp / mysql.log
    
  2. 컴퓨터 또는 mysqld 서비스를 재시작하십시오

    서비스 mysqld 재시작
    
  3. mysql / mysql 콘솔을 사용하는 phpmyadmin / any 응용 프로그램을 열고 쿼리를 실행하십시오

  4. 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")

참고 : 조회 ControlC완료시

일반 로그가 활성화되면 다음을 시도하십시오.

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