mysql_install_db는 MySQL 서버(mysqld)가 실제로 사용 가능한 상태가 되기 전에 수행해야 하는 초기화 작업을 담당하는 유틸리티입니다. 이 도구는 MySQL 데이터 디렉터리를 초기화하고, 그 안에 포함될 시스템 테이블들을 생성하며, InnoDB 테이블을 관리하는 데 필요한 시스템 테이블스페이스와 관련 데이터 구조까지 함께 준비해 줍니다.
기본 보안(Secure-by-Default) 배포 특징
최신 버전의 mysql_install_db는 기본적으로 보안이 강화된 MySQL 배포 환경을 만들어 줍니다. 주요 특징은 다음과 같습니다.
무작위로 생성된 비밀번호를 가진 단일 관리자 계정 'root'@'localhost'가 생성되며, 해당 비밀번호는 만료(expired) 상태로 표시됩니다.
익명(anonymous) 사용자 계정은 생성되지 않습니다.
모든 사용자가 접근할 수 있는 테스트(test) 데이터베이스는 생성되지 않습니다.
--admin-xxx 옵션들을 통해 관리자 계정의 다양한 특성을 세부적으로 제어할 수 있습니다.
--random-password-file 옵션을 사용하면 무작위 비밀번호가 기록될 파일의 위치를 직접 지정할 수 있습니다.
--insecure 옵션을 사용하면 무작위 비밀번호 생성 기능을 비활성화할 수 있습니다.
mysql_install_db가 무작위 관리자 비밀번호를 성공적으로 생성하면, 해당 비밀번호를 파일에 기록하고 파일 이름도 함께 화면에 출력합니다.
호출 문법(Invocation Syntax)
mysql_install_db를 실행하려면 먼저 MySQL 설치 디렉터리로 이동한 뒤, 아래와 같은 형식으로 명령어를 입력합니다.
shell> bin/mysql_install_db --datadir=path/to/datadir [other_options]
여기서 --datadir 옵션은 필수입니다. mysql_install_db는 데이터 디렉터리를 새로 생성하므로, 해당 디렉터리는 사전에 존재하지 않아야 합니다.
만약 데이터 디렉터리가 이미 존재한다면, 이는 신규 설치(install)가 아니라 업그레이드(upgrade) 작업을 의미합니다. 이 경우에는 mysql_install_db가 아니라 mysql_upgrade를 실행해야 합니다.
또한 데이터 디렉터리가 존재하지 않는 상태에서 mysql_install_db 실행이 실패했다면, 일부만 생성된 불완전한 데이터 디렉터리를 반드시 삭제한 후에 다시 실행해야 합니다.
실행 계정 관련 주의사항
MySQL 서버인 mysqld는 나중에 실행될 때 데이터 디렉터리에 접근해야 하므로, 사용자는 다음 두 가지 방법 중 하나를 선택해야 합니다.
mysqld를 실행할 시스템 계정과 동일한 계정으로 mysql_install_db를 실행하거나,
root 권한으로 실행하되 --user 옵션을 지정하여 mysqld가 실행될 사용자 이름을 명시적으로 알려주어야 합니다.