답변:
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 파일은 사용하려고 시도하고 마지막으로 사용하는 파일을 나열합니다.
ps auxf
MySQL에서 실행 된 명령을 실행하고 찾아야합니다. 일반적으로 다음과 같이 보입니다 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
open(...
줄 이 없습니다 . 대신 나는로 끝나는 4 줄이 있습니다 = -1 Err#2
. 어떤 파일이로드되었는지 어떻게 알 수 있습니까?
sudo dtruss mysqld 2>&1|grep my.cnf
이 출력은 파일이 발견되지 않아 열리지 않았 음을 의미합니다.
환상적인 "고성능 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
!includedir
. 파일 의 !includedir
지시문 /etc/mysql/my.cnf
이 작동하지 않는 이유를 알아 내려고합니다 .
mysqld
전체 경로 로 전화해야합니까 ?!
당신이 mysql --verbose --help | less
그것을 실행 .cnf
하면 찾을 파일 11 행에 대해 알려줍니다 .
mysql --print-defaults
구성 값이 어떻게 사용되는지 보여줄 수도 있습니다. 또한 어떤 구성 파일을로드하는지 식별하는 데 유용 할 수 있습니다.
mysqld
대신 대신 사용하고 싶을 수도 있습니다mysql
mysqld --print-defaults
하여이 질문을봤을 때 내가 원하는 것을 정확하게 제공했습니다.
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
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
기본적으로.
mysqld --help --verbose는 위험하다. 인스턴스 실행을 위해 pidfile을 쉽게 덮어 쓸 수 있습니다! --pid-file = XYZ와 함께 사용하십시오.
아, 인스턴스가 두 개 이상 실행 중이라면 실제로 사용할 수 없습니다. 기본값 만 표시됩니다.
그것에 관한 정말 좋은 기사 :
우분투에서 빠른 테스트를했습니다.
/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 "기본 옵션"
Windows에있는 경우 Sysinternals procmon을 사용할 수 있습니다 . 이것을 열고 필터 설정을 구성한 다음 "추가"를 클릭하십시오. 이제 procmon은 mysqld를 모니터링합니다.
이제 정상적으로 MySQL 서버를 시작하십시오. Procmon은 mysql의 백그라운드 작업을 캡처합니다. "나"를 검색하십시오. procmon 결과 창에 다음과 같은 내용이 있습니다.
mysql이 구성 파일 목록을 차례로 검색한다는 것은 분명합니다. 제 경우에는 C:\mysql-5.7.19-winx64\my.cnf
성공적으로 발견 되었으므로 이것을 사용하고 있습니다.