사용중인 MySQL 구성 파일 확인


답변:


60

Linux를 사용하는 경우 strace예를 들어로 'mysqld'를 시작하십시오 strace ./mysqld.

다른 모든 시스템 호출 중에는 다음과 같은 것이 있습니다.

stat64("/etc/my.cnf", 0xbfa3d7fc)       = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3

보시다시피 .cnf 파일은 사용하려고 시도하고 마지막으로 사용하는 파일을 나열합니다.


9
그리고 아무것도 망칠 필요없이 실행중인 시스템에서 어떻게해야합니까?
밀라노 Babuškov

5
@ MilanBabuškov ps auxfMySQL에서 실행 된 명령을 실행하고 찾아야합니다. 일반적으로 다음과 같이 보입니다 mysqld --basedir=/usr/local/mysql ...(... ... 명령에 더 많은 플래그가있을 수 있지만 모든 것을 나열하지는 않습니다.) 일단 발견하면 전체를 복사 한 다음 MySQL을 종료하십시오. Linux를 사용하는 경우 /etc/init.d/mysqld stop또는 mysqladmin -u root -p shutdown입니다. 그런 다음 strace복사 한 mysql 명령으로 실행하십시오. strace mysqld --basedir=/usr/local/mysql
Hengjie

open(...줄 이 없습니다 . 대신 나는로 끝나는 4 줄이 있습니다 = -1 Err#2. 어떤 파일이로드되었는지 어떻게 알 수 있습니까?
mgPePe

4
fwiiw, Mac에서는 strace : @mgPePe 대신 dtruss를 사용할 수 있습니다. sudo dtruss mysqld 2>&1|grep my.cnf이 출력은 파일이 발견되지 않아 열리지 않았 음을 의미합니다.
vitaly

268

환상적인 "고성능 MySQL"O'Reilly 책에서 발췌 :

$ which mysqld
/usr/sbin/mysqld

$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf

2
그리고 마지막으로 나열된 파일이 이길 것이라고 생각합니까?
mlissner

5
나는 이상하다.. 나는 그들 모두를 점검했다. 그리고 그들은 모두 나의 Mac에서 비어있다.
abbood

7
로드 된 구성은 제공하지 않습니다. 로드 될 가능성이있는 사용자 지정 구성
mgPePe

4
에 의해 지정된 파일이 나열되지 않을 것이라고 생각합니다 !includedir. 파일 의 !includedir지시문 /etc/mysql/my.cnf이 작동하지 않는 이유를 알아 내려고합니다 .
Buttle Butkus 2016 년

2
mysqld전체 경로 로 전화해야합니까 ?!
panepeter 2019

65

당신이 mysql --verbose --help | less그것을 실행 .cnf하면 찾을 파일 11 행에 대해 알려줍니다 .

mysql --print-defaults구성 값이 어떻게 사용되는지 보여줄 수도 있습니다. 또한 어떤 구성 파일을로드하는지 식별하는 데 유용 할 수 있습니다.


1
이것이 mysql 권장 방법이므로 +1입니다. Windows의 경우 한 가지 간단한 방법은 컨텐츠를 분석하려는 경우 출력을 파일로 덤프하는 것입니다.
kta

Windows에서는 위치 목록이 있지만 올바른 위치는 아니지만 mysql Workbench ( stackoverflow.com/a/17953456/1504300 ) 로 찾을 수 있습니다.
reallynice

3
중요하지는 않지만 mysqld대신 대신 사용하고 싶을 수도 있습니다mysql
nl-x

2
그리고 여전히 Windows에서는 my.ini가 ProgramData 디렉토리에서 읽히고 여기에 제안 된 답변에 표시되지 않습니다.
nl-x

2
에 찬성 mysqld --print-defaults하여이 질문을봤을 때 내가 원하는 것을 정확하게 제공했습니다.
Per Lundberg

28

Windows를 사용 중이며 최신 버전의 MySQL 커뮤니티 5.6을 설치했습니다.

구성 파일이 사용하는 것을 확인하기 위해 관리 도구> 서비스> MySQL56> 마우스 오른쪽 버튼으로 클릭> 속성으로 이동하여 실행 파일 경로를 확인했습니다.

"C : / Program Files / MySQL / MySQL Server 5.6 / bin \ mysqld"--defaults-file = "C : \ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini"MySQL56


이것은 MySQL 5.7에서도 작동합니다. 그것은에있어 C:\ProgramData\MySQL\MySQL Server 5.7\my.ini기본적으로.
Ryan Shillington

18

대안은 사용하는 것입니다

mysqladmin variables

2
실제로 cnf 파일이 내 변수의 어디에 있는지 말하지 않습니다. 현재 MySQL 5.5.20을 실행하고 있습니다. 그러나, 나는 이전에 변수에서 본 것처럼 이것이 한 번 작동했다고 말할 수 있습니다. 아마도 5.5로 옮겨 간 이후로 뭔가가 바뀌었을 것입니다.
Hengjie

13

mysqld --help --verbose는 위험하다. 인스턴스 실행을 위해 pidfile을 쉽게 덮어 쓸 수 있습니다! --pid-file = XYZ와 함께 사용하십시오.

아, 인스턴스가 두 개 이상 실행 중이라면 실제로 사용할 수 없습니다. 기본값 만 표시됩니다.

그것에 관한 정말 좋은 기사 :

MySQL 구성 파일을 찾는 방법은 무엇입니까?


9

우분투에서 빠른 테스트를했습니다.

  • /etc/mysql/my.cnf를 생성 한 mysql-server 설치

  • mysqld --verbose --help | grep -A 1 "기본 옵션"

110112 13:35:26 [참고] 플러그인 'FEDERATED'가 비활성화되었습니다.
기본 옵션은 주어진 순서대로 다음 파일에서 읽습니다. /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~ / .my.cnf

  • 각각 포트 번호가 다른 /etc/my.cnf 및 /usr/etc/my.cnf 작성

  • mysql을 다시 시작-/usr/etc/my.cnf에 설정된 포트 번호를 사용하고있었습니다

또한 mysqld에 --defaults-file 옵션을 찾았습니다. 여기에 구성 파일을 지정하면 / usr / sbin / mysqld --verbose --help |에 의해 리턴되는 내용에 관계없이 해당 구성 파일 만 사용됩니다. grep -A 1 "기본 옵션"


4

MySQL Workbench를 사용하면 "서버 상태"에 표시됩니다 : 여기에 이미지 설명을 입력하십시오


3

나는 이것이 정말로 유용하다는 것을 알았다.

  1. 서비스에서 MySQL 프로세스를 찾으십시오. Control Panel -> Administration Tools
  2. 마우스 오른쪽 버튼을 클릭하고 선택 Properties
  3. 를 클릭 한 Path to executable후 경로를 포함하고 있는지 확인하십시오.my.ini/my.cfg

1
이것은 Server 2008 설치에서 나에게 도움이되었습니다. 감사합니다.
delliottg

2

일부 서버에는 여러 개의 MySQL 버전이 설치 및 구성되어 있습니다. Unix 명령으로 실행되는 올바른 버전을 다루고 있는지 확인하십시오.

ps -ax | grep mysql

1

서비스로 mysql을 사용하여 Windows 서버를 실행하는 사람들의 경우 실행중인 구성 파일을 찾는 쉬운 방법은 서비스 제어판을 열고 mysql 서비스 (내 경우 'MYSQL56')를 찾은 다음 마우스 오른쪽 버튼을 클릭하고 속성을 클릭하는 것입니다 . 그런 다음 여기에서 defaults-file구성 파일의 위치를 ​​가리키는 스위치 가 있어야하는 "실행 파일 경로"를 확인할 수 있습니다 .


1

Mac 을 실행하는 경우 다음 을 수행해도됩니다.

sudo dtruss mysqld 2>&1 | grep cnf

1

Windows에있는 경우 Sysinternals procmon을 사용할 수 있습니다 . 이것을 열고 필터 설정을 구성한 다음 "추가"를 클릭하십시오. 이제 procmon은 mysqld를 모니터링합니다.

여기에 이미지 설명을 입력하십시오

이제 정상적으로 MySQL 서버를 시작하십시오. Procmon은 mysql의 백그라운드 작업을 캡처합니다. "나"를 검색하십시오. procmon 결과 창에 다음과 같은 내용이 있습니다.

여기에 이미지 설명을 입력하십시오

mysql이 구성 파일 목록을 차례로 검색한다는 것은 분명합니다. 제 경우에는 C:\mysql-5.7.19-winx64\my.cnf성공적으로 발견 되었으므로 이것을 사용하고 있습니다.


이것은 기본적으로 Windows의 경우 최고 답변과 같습니다. 감사합니다.
Aaron Wallentine

0

mysql use brew install mysql을 설치했습니다.

mysqld --verbose --help | less

그리고 그것은 보여줍니다 :

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.