2.10.1.1 mysql_install_db 실행 문제
mysql_install_db 프로그램의 목적은 새로운 MySQL 권한 테이블을 생성하는 것입니다. 그것은 기존의 MySQL 권한 테이블을 덮어 쓰지 않고 다른 데이터에 영향을주지 않습니다.
권한 테이블을 다시 작성하는 경우는 mysqld 서버가 실행하고 있으면 그것을 중지합니다. 다음 데이터 디렉토리의 mysql
디렉토리를 저장하기 위해 이름 변경 후 mysql_install_db를 실행합니다. 현재 디렉토리가 MySQL 설치 디렉토리에서 mysql_install_db가 bin
디렉토리에 있고 데이터 디렉토리의 이름이 data
라고합니다. mysql
데이터베이스 이름 변경 mysql_install_db를 실행하려면 다음 명령을 사용합니다.
shell>mv data/mysql data/mysql.old
shell>scripts/mysql_install_db --user=mysql
mysql_install_db를 실행하면 다음과 같은 문제가 발생할 수 있습니다.
mysql_install_db가 부여 테이블 설치에 실패
mysql_install_db가 부여 테이블 설치에 실패하고 다음 메시지를 표시 한 후 종료 될 수 있습니다.
Starting mysqld daemon with databases from XXXXXX mysqld ended
이 경우 오류 로그 파일을 매우 신중하게 검토해야합니다. 로그는 오류 메시지에 지정된 디렉토리
XXXXXX
에있는 것이고, mysqld가 시작되지 않은 이유를 설명하는 것입니다. 어떤 문제가 발생했는지 모르는 경우 버그 보고서를 게시 할 때 로그를 함께 보냅니다. 섹션 1.7 "질문이나 버그를보고하는 방법" 을 참조하십시오.mysqld 프로세스가 실행되는
이것은 서버가 실행되는 것을 보여줍니다. 이 경우 부여 테이블은 아마 이미 작성되어 있습니다. 그 경우, mysql_install_db를 시작해야하는 이유는 한 번만 (처음 MySQL을 설치 한 경우)이기 때문에 그것을 시작할 필요가 전혀 없습니다.
1 대의 서버 시작 중에 두 번째 mysqld 서버를 설치할 수 없다
이것은 기존의 MySQL의 설치가 다른 장소에 새롭게 설치하는 경우에 발생할 수 있습니다. 예를 들어, 실전의 설치가 이미 있지만, 테스트 목적으로 두 번째 설치를 작성하는 경우입니다. 일반적으로 두 번째 서버를 시작하려고 할 때 발생하는 문제는 첫 번째 서버가 사용하는 네트워크 인터페이스를 두 번째 서버가 사용하려고하는 경우에 발생합니다. 이 경우 다음 오류 메시지 중 하나가 나타날 것입니다.
Can not start server : Bind on TCP / IP port : Address already in use Can not start server : Bind on unix socket ...
여러 서버의 설정에 대한 설명은 5.3 절 "하나의 시스템에서 여러 MySQL 인스턴스 실행" 을 참조하십시오.
/tmp
디렉토리에 대한 쓰기 권한이없는기본 위치 (
/tmp
디렉토리) 또는TMP_DIR
환경 변수 (설정되는 경우) 임시 파일이나 Unix 소켓 파일을 만들기위한 쓰기 권한이없는 경우, mysql_install_db 또는 mysqld 서버를 시작하면 오류가 발생합니다 .mysql_install_db 또는 mysqld를 시작하기 전에 다음 명령을 실행하여 임시 디렉토리 및 Unix 소켓 파일에 다른 위치를 지정할 수 있습니다. 여기에서
some_tmp_dir
은 쓰기 권한이있는 디렉토리의 전체 경로 이름입니다.shell>
TMPDIR=/ some_tmp_dir /
shell>MYSQL_UNIX_PORT=/ some_tmp_dir /mysql.sock
shell>export TMPDIR MYSQL_UNIX_PORT
그러면 mysql_install_db를 시작하고 다음 명령에서 서버를 시작할 수있을 것입니다.
shell>
scripts/mysql_install_db --user=mysql
shell>bin/mysqld_safe --user=mysql &
mysql_install_db가
scripts
디렉토리에있는 경우에는 첫 번째 명령을scripts/mysql_install_db
로 변경합니다.섹션 B.5.4.5 "MySQL의 UNIX 소켓 파일을 보호하거나 변경하는 방법" 및 섹션 2.12 "환경 변수" 를 참조하십시오.
MySQL의 배포에서 제공되는 mysql_install_db 프로그램을 실행하려면 여러 가지 방법이 있습니다.
초기 권한을 표준 기본값과 다른 것으로하는 경우, mysql_install_db를 실행하기 전에 변경할 수 있습니다. 그러나 부여 테이블을 설정 한 후
GRANT
및REVOKE
를 사용하여 권한을 변경하는 것을 권장합니다. 즉, mysql_install_db를 실행 한 다음mysql -u root mysql
를 사용하여 MySQLroot
사용자로 서버에 연결합니다. 이제 필요한GRANT
및REVOKE
문을 실행할 수 있습니다.동일한 권한으로 여러 대의 컴퓨터에 MySQL을 설치하는 경우,
GRANT
및REVOKE
문을 하나의 파일에 넣고 mysql_install_db를 시작한 후mysql
을 사용하여 파일을 스크립트로 실행할 수 있습니다. 예 :shell>
scripts/mysql_install_db --user=mysql
shell>bin/mysql -u root < your_script_file
이렇게하면 각 컴퓨터에서 문을 수동으로 발행하는 필요가 없습니다.
부여 테이블을 생성 한 후에 완전히 다시 만들 수 있습니다. 단순히
GRANT
및REVOKE
의 사용 방법을 학습하고, mysql_install_db를 실행 한 후 너무 많은 변경을 행한위한 테이블을 지우고 다시 경우에는 이렇게하는 것이 좋습니다.부여 테이블을 다시 작성하려면
mysql
데이터베이스 디렉토리에있는 모든.frm
,.MYI
, 및.MYD
파일을 삭제합니다. 다음은 mysql_install_db 프로그램을 다시 실행합니다.mysqld를
--skip-grant-tables
옵션을 사용하여 수동으로 시작하고 mysql을 사용하여 직접 권한 정보를 추가 할 수 있습니다.shell>
bin/mysqld_safe --user=mysql --skip-grant-tables &
shell>bin/mysql mysql
mysql에서 mysql_install_db의 SQL 명령을 수동으로 실행합니다. mysqladmin flush-privileges 또는 mysqladmin reload를 반드시 후에 실행하여 부여 테이블을 다시로드하도록 서버에 지시합니다.
mysql_install_db를 사용하지 않은 경우는 부여 테이블에 수동으로 데이터를 이입해야한다뿐 아니라, 우선 부여 테이블을 작성해야합니다.