OS X에서 mysql 로그는 어디에 있습니까?


74

/ var / log 및 / usr / local / mysql을 확인했는데 로그를 찾을 수없는 것 같습니다. PHP 기능으로 데이터베이스 연결을 설정하는 중 오류를 해결하려고합니다.

답변:


95

Chealion이 언급했듯이 mysql을 설치할 수있는 몇 가지 방법이 있습니다. 각각은 데이터 디렉토리 및 / 또는 로그를 다른 위치에 배치합니다. 다음 명령은 (그리고 우리에게) 어디를 볼 것인지를 잘 보여줍니다.

ps auxww|grep [m]ysqld

# Putting brackets around the first char is a `grep`+`ps` trick
# to keep it from matching its own process.
# Note: For zsh compatibility put quotes around the grep regex

해당 명령의 결과를 여기에 게시 할 수 있습니까? 광산은 다음과 같습니다.

_mysql     101   0.0  0.3   112104  13268   ??  S    12:30AM   0:13.20 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql --user=mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
root        76   0.0  0.0   600172    688   ??  S    12:30AM   0:00.02 /bin/sh /opt/local/lib/mysql/bin/mysqld_safe --datadir=/opt/local/var/db/mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid

그로부터 내 datadir이 /opt/local/var/db/mysql(MacPorts를 통해 설치 되었기 때문에) 있음을 알 수 있습니다 . 이 수업을 조금 더 진행하겠습니다 ...

첫 번째 줄에서 내 데몬이 /opt/local/libexec/mysqld입니다. 를 mysqld사용 --verbose --help하여 모든 명령 행 옵션 (여기서는 중요하고 중요한 부분입니다!)의 목록을 가져 와서 도움말 출력을 확인하는 대신 mysqld를 시작한 경우 사용되는 값을 가져올 수 있습니다. 값은 컴파일 시간 구성, my.cnf파일 및 모든 명령 행 옵션의 결과입니다. 이 기능을 이용하여 다음과 같이 로그 파일이 어디에 있는지 정확하게 찾을 수 있습니다.

/opt/local/libexec/mysqld --verbose --help|grep '^log'

광산은 다음과 같습니다.

log                               /tmp/mysql.log
log-bin                           /tmp/mysql-bin
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /tmp/mysql.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

LO와 BEHOLD! 내 로그 파일이 완전히 비표준 위치에 보관되어 있기 때문에 전 세계의 모든 조언이 도움이되지 않았습니다! /tmp/랩톱에서 재부팅 할 때 모든 로그를 잃어 버리지 않기 때문에 실제로 보관합니다.

모두 모아서 하나의 라이너로 만들어 봅시다 :

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

하나의 명령을 실행하면 실행중인 mysql 인스턴스에 대한 모든 로그 목록이 표시됩니다.

즐겨!

이 Bash-Fu는 오픈 소스에 관한 모든 것에 대한 약속으로 무료로 제공되었습니다.


2
mysqladmin variables현재 값을 얻는 대신에 직접 사용하기위한 기본 명령 지금mysqld
존 커밍스을

@JohnCummings, 소스?
Pacerier

오늘 나는 의견이없는 다운 투표권을 얻었습니다. 나는 모든 답변을 유지합니다. 열 살짜리 사람도. 당신은 다운 투표로 누군가를 돕고 있지 않습니다. 코멘트를 남겨주세요!
Bruno Bronosky 2016 년

@ jm3은 정교하게 관리? 더 이상 MacOS에 액세스 할 수 없습니다.
Bruno Bronosky

12

MySQL / MariaDB 로그에는 3 가지 유형이 있습니다.

  • 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 -se "SELECT @@datadir"

오류 로그를 보려면 다음을 실행하십시오.

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

일반 로그를 사용하도록 설정 한 경우이를 보려면 다음을 실행하십시오.

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

10

이 정보를 찾는 또 다른 방법은를 사용하는 것 lsof입니다.

  1. 활동 모니터를 사용하여의 PID 를 찾 mysql거나 ps -ef | grep mysqld찾을 수 있습니다.

  2. sudo lsof -p PID_OF_MYSQLD MySQL이 어떤 파일을 열 었는지 확인하십시오.


6

이것을 찾으려면 잠시 시간을 보냈습니다 ...이 위치를보십시오 : '

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err

3
광산에/usr/local/var/mysql/<USERNAME>.local.err
jonnysamps

3

기본적으로 모든 로그 파일은 mysqld 데이터 디렉토리에 생성됩니다.

출처 : MySQL 문서

mysqlbinlog/ usr / local / mysql / data /에서 바이너리 로그 파일을 읽는 데 사용할 수 있습니다 (설치시 바이너리는 아니 었습니다). 일부 오류는 단순히 stderr로 전달되므로 확인해야 할 수도 /var/log/system.log있습니다.


mysql 디렉토리에 데이터 디렉토리가 없습니다. / usr / local / mysql / 디렉토리 전체를 살펴본 결과 로그를 찾을 수 없습니다. mysql 구성을 볼 수있는 방법이 없습니까? phpinfo ()처럼
Tony

MySQL을 어떻게 설치 했습니까? Mac OS X Server, MacPorts 또는 공식 MySQL 패키지와 함께 사전 설치된 MySQL?
Chealion

0

다음을 사용하지 않으면 해당 로그가있는 폴더에 액세스 할 수 없습니다 sudo.

sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x---   4 _mysql  wheel    136 Jul 10 23:06 data

큰 로그 파일을 찾은 경우 Time Machine을 사용하는 경우 Time Machine 이란 무엇입니까?를 참조하십시오. 서버 결함.


/ usr / local / mysql에 데이터 디렉토리가 없습니다
Tony

0

기본적으로 모든 로그 파일은 mysqld 데이터 디렉토리에 생성됩니다. 불행히도 많은 사람들이 로그 파일 (및 프로그램)을 일반적인 위치에 두지 않습니다. 나는 그들 중 하나입니다!

Navicat for MySQL을 시도 할 때까지 MySQL을 사용하여이 루틴을 직접 수행했습니다 . 나중에 Navicat Premium으로 업그레이드했습니다 . 둘 다 하나의 포괄적 인 목록에 모든 서버 변수가있는 탭을 포함하는 모니터링 도구가 있습니다. 다음은 log_error 서버 변수가있는 스크린 샷입니다.

Navicat 서버 모니터링 도구의 log_error 서버 변수

Navicat 서버 모니터링 도구의 log_error 서버 변수

목록에서 바로 변수를 설정할 수도 있습니다.

건배!


-2

/ 라이브러리 /Logs/MySQL.log


거기에 다른 로그가 있지만 mysql은 아닙니다.
Tony

어떤 버전의 Mac OS X Server입니까? 일반적으로, Mac OS X Server에서 / var / log / & / Library / Logs /를 찾아보십시오. 이 문제와 관련하여 /var/log/system.log를 살펴보십시오. / var / mysql에 .err 로그 파일과 같은 사용 항목이있을 수 있지만 (Leopard Server의 기본 구성에 있음) 또한 위에서 언급 한 / 라이브러리 / 로그 /MySQL.log 소켓이나 네트워크 연결을 통해 연결하려고합니까? 후자의 경우 Server Admin에서 "네트워크 연결을 활성화"했습니까 (Leopard에서; Tiger에서는 / Applications / Utilities에서 별도의 앱이었습니다)?
morgant
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.