2.10.1.3 MySQL 서버 시작 및 문제 해결
이 섹션에서는 Unix 유사 시스템에서 서버 시작 문제 해결 제안을 나타냅니다. Windows를 사용하는 경우에는 2.3.6 "Microsoft Windows MySQL Server 설치 문제 해결" 을 참조하십시오.
서버 시작시에 문제가있는 경우 다음을 시도합니다.
오류 로그 를 확인하여 서버가 시작되지 않는 원인을 확인합니다. 로그 파일은 데이터 디렉토리 (일반적으로 Windows에서는
C:\Program Files\MySQL\MySQL Server 5.6\data
, Unix / Linux 바이너리 배포판에서는/usr/local/mysql/data
, Unix / Linux 소스 배포판에서는/usr/local/var
)에 있습니다. 데이터 디렉토리의
및host_name
.err
형식의 파일 이름의 파일을 찾습니다. 여기서host_name
.loghost_name
은 서버 호스트의 이름입니다. 다음 이러한 파일의 마지막 몇 줄을 확인합니다. 그들을 보려면tail
을 사용합니다.shell>
tail host_name .err
shell>tail host_name .log
사용하고있는 스토리지 엔진에 필요한 옵션이 있으면 지정합니다.
my.cnf
파일을 생성하여 사용하는 엔진의 시동 옵션을 지정합니다. 트랜잭션 테이블을 지원하는 스토리지 엔진 (InnoDB
,NDB
)을 사용할 계획 인 경우, 서버를 시작하기 전에 그들이 제대로 구성되어 있는지 확인합니다.InnoDB
테이블을 사용하는 경우 지침은 섹션 14.3 "InnoDB 구성" 옵션 구문은 섹션 14.12 "InnoDB 부팅 옵션 및 시스템 변수" 를 참조하십시오.스토리지 엔진은 생략 옵션은 기본값을 사용하지만 사용 가능한 옵션을 확인하고 기본값이 설치에 적합하지 않은 같은 옵션이 있으면 명시 적으로 값을 지정하는 것이 좋습니다 합니다.
서버가 데이터 디렉토리 를 검색 할 위치를 인식하고 있는지 확인하십시오. mysqld 서버는이 디렉토리를 현재 디렉토리로 사용합니다. 그래서 데이터베이스를 찾고, 로그 파일에 기록하는 것을 상정하고 있습니다. 서버는 데이터 디렉토리에 pid (프로세스 ID) 파일을 씁니다.
기본 데이터 디렉토리의 위치는 서버의 컴파일시에 하드 코드됩니다. 기본 경로 설정을 확인하려면 mysqld를
--verbose
옵션 및--help
옵션으로 기동합니다. 데이터 디렉토리가 시스템의 다른 위치에있는 경우 해당 위치를 명령 행 또는 옵션 파일에서--datadir
옵션을 사용해 mysqld 또는 mysqld_safe에 지정합니다. 그렇지 않으면 서버가 제대로 작동하지 않습니다.--datadir
옵션의 대안으로 MySQL이 설치되는베이스 디렉토리 위치를 mysqld에--basedir
에서 지정할 수 있습니다. 그러면 mysqld는 거기에서data
디렉토리를 검색합니다.경로 옵션 지정의 효과를 알기 위해서는 mysqld를 옵션으로 실행 다음에
--verbose
및--help
옵션을 실행합니다. 예를 들어, 위치 mysqld를 설치 한 디렉토리로 변경하고 다음 명령을 실행하면 기본 디렉토리/usr/local
에서 서버를 시작한 결과가 표시됩니다.shell>
./mysqld --basedir=/usr/local --verbose --help
--datadir
같은 옵션도 지정할 수 있지만,--verbose
및--help
옵션은 맨이어야합니다.어떤 경로를 설정 한 후 서버를
--verbose
및--help
를 사용하지 시작합니다.mysqld가 실행중인 경우, 다음 명령을 실행하여 경로가 어떤 사용되고 있는지 확인할 수 있습니다.
shell>
mysqladmin variables
또는 :
shell>
mysqladmin -h host_name variables
host_name
은 MySQL 서버의 호스트 이름입니다.서버가 데이터 디렉토리 에 액세스 할 수 있는지 확인하십시오. 데이터 디렉토리와 그 내용의 소유권과 권한은 서버가 그들을 읽고 수정 할 수있는 것이어야합니다.
mysqld를 시작할 때
Errcode 13
(Permission denied
)을 받을 경우, 데이터 디렉토리 또는 그 컨텐츠의 특권이 서버 액세스를 허가하지 않을 것임을 의미합니다. 이 경우 관련 파일 및 디렉토리 권한을 변경하여 서버가 그들을 사용할 수있는 권한을 갖게합니다. 서버를root
에서 시작 할 수 있지만이 경우 보안 문제가 발생하기 때문에 피해야한다.위치를 데이터 디렉토리로 변경하고 데이터 디렉토리와 그 내용의 소유권을 확인하고 서버에 액세스 권한이 있는지 확인합니다. 예를 들어, 데이터 디렉토리가
/usr/local/mysql/var
의 경우 다음 명령을 사용합니다.shell>
ls -la /usr/local/mysql/var
데이터 디렉토리 나 파일 또는 서브 디렉토리가 서버를 실행하는 로그인 계정의 소유가 아닌 경우, 그 소유권을 계정으로 변경합니다. 계정이
mysql
의 경우 다음 명령을 사용합니다.shell>
chown -R mysql /usr/local/mysql/var
shell>chgrp -R mysql /usr/local/mysql/var
소유권이 적절한 경우에도 파일 시스템의 다른 부분에 응용 프로그램 액세스를 관리하는 같은 보안 소프트웨어가 시스템에서 실행되는 경우 MySQL이 시작에 실패 할 수 있습니다. 이 경우 해당 소프트웨어를 재구성하여 mysqld가 정상 작동시 사용하는 디렉토리에 액세스 할 수 있도록합니다.
서버가 사용하는 네트워크 인터페이스를 사용할 수 있는지 확인합니다.
다음 중 하나의 오류가 발생하면 다른 프로그램 (아마도 다른 mysqld 서버)가 mysqld가 사용하는 TCP / IP 포트 또는 Unix 소켓 파일을 사용하는 것을 의미합니다.
Can not start server : Bind on TCP / IP port : Address already in use Can not start server : Bind on unix socket ...
ps를 사용하여 다른 mysqld 서버가 실행 중인지 확인합니다. 그 경우, mysqld를 다시 시작하기 전에 서버를 종료합니다. (다른 서버가 실행 중이고 여러 서버를 실행시킬 필요가있는 경우에는 그 방법에 대한 정보는 섹션 5.3 "하나의 시스템에서 여러 MySQL 인스턴스 실행" 에 있습니다.)
다른 서버가 실행되고 있지 않으면 명령
telnet
를 실행합니다. (기본 MySQL 포트 번호는 3306입니다.) 다음 Enter 키를 여러 번 누릅니다.your_host_name tcp_ip_port_number
telnet: Unable to connect to remote host: Connection refused
같은 오류 메시지가 표시되지 않는 경우, mysqld이 사용하려고하는 TCP / IP 포트를 다른 프로그램이 사용하고 있습니다. 그것이 어떤 프로그램인지를 추적하여 비활성화하거나--port
옵션을 사용하여 mysqld 다른 포트에서 대기하도록 지시합니다. 이 경우 TCP / IP를 사용하여 서버에 연결할 때 클라이언트 프로그램에 대해 동일한 대체 포트 번호를 지정합니다.포트에 액세스 할 수없는 다른 이유에 방화벽이 연결을 차단하는 경우가 있습니다. 이 경우 방화벽 설정을 포트에 대한 액세스를 허용하도록 변경합니다.
서버는 시작하지만 그것에 연결할 수없는 경우는
/etc/hosts
에 다음과 같은 항목이 있는지 확인합니다.127.0.0.1 localhost
mysqld를 시작할 수없는 경우는
--debug
옵션을 사용하여 추적 파일을 작성하여 문제를 발견하고보십시오. 섹션 24.4.3 "DBUG 패키지" 를 참조하십시오.