MySQL에서 부팅 파일을 열 수 없습니다.

MySQL에서 부팅 파일을 열 수 없습니다.

RH/Oracle Linux용 MySQL 버전 5.7.10을 설치한 후 초기화 중에 부트스트랩 파일을 찾을 수 없다는 오류가 발생합니다. 새로 설치한 것이고 버그가 아직 해결되지 않았기 때문에 이것이 어디서 발생하는지 잘 모르겠습니다.

설치 프로그램이 이 폴더에 대한 권한을 올바르게 설정했습니다.

# ls -l /var/lib | grep mysql-files
drwxr-x---. 2 mysql         mysql         4096 Dec  8 15:13 mysql-files

mysqld.log:

2015-12-08T14:13:24.524728Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2015-12-08T14:13:26.107212Z 0 [Warning] InnoDB: New log files created, LSN=45790
2015-12-08T14:13:26.440941Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2015-12-08T14:13:26.612704Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: d95e041f-9db5-11e5-a33f-525400eb9be6.
2015-12-08T14:13:26.650484Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2015-12-08T14:13:26.668489Z 1 [Note] A temporary password is generated for root@localhost: YZ+#zIY/m2=:
2015-12-08T14:13:39.994706Z 1 [ERROR] Failed to open the bootstrap file /var/lib/mysql-files/install-validate-password-plugin.OFJRaf.sql
2015-12-08T14:13:39.994728Z 1 [ERROR] 1105  Bootstrap file error, return code (0). Nearest query: 'LSE SET @sys.tmp.table_exists.SQL = CONCAT('SELECT COUNT(*) FROM `', in_db, '`.`', in_table, '`'); PREPARE stmt_select FROM @sys.tmp.table_exists.SQL; IF (NOT v_error) THEN DEALLOCATE PREPARE stmt_select; SET out_exists = 'TEMPORARY'; END IF; END IF; END;
'
2015-12-08T14:13:39.994880Z 0 [ERROR] Aborting

답변1

Oracle 저장소에서 mysql-community-server를 설치하는 동안 이 오류가 발생했습니다.

mysqld_safewith 문을 실행하여 비밀번호를 재설정하면 문제가 해결됩니다. 이상하지 않나요?

/tmp/mysql-init.txt:

UPDATE mysql.user SET authentication_string = PASSWORD('p@ssw0rd')
WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

시작 mysqld_safe:

mysqld_safe --init-file=/tmp/mysql-init.txt

새 비밀번호를 설정했는지 확인하세요.

service mysqld stop
service mysqld start
chkconfig mysqld on

mysql CLI를 사용하여 루트의 비밀번호를 테스트하십시오.

mysql -u root -p

답변2

SELinux 관련 버그입니다. 자세한 내용을 확인하실 수 있습니다.여기

다음 단계를 사용할 수 있습니다.

1단계: 다음 명령을 사용하여 SELinux를 비활성화합니다.

setenforce 0

2단계: 다음과 같이 mysql 서비스를 시작합니다.

service mysqld start

이제는 괜찮을 것입니다.

3단계: 다음 명령을 사용하여 루트 비밀번호를 보호하면서 변경합니다.

mysql_secure_installation

mysql에서 제공한 비밀번호를 제공하고(mysqld.log 확인) 새 비밀번호를 만듭니다.

4단계: 다음 명령을 사용하여 SELinux 기능을 다시 활성화합니다.

setenforce 1

mysql 서비스를 중지/재시작/시작하는 경우 서비스를 비활성화할 필요가 없습니다.

답변3

동일한 오류가 발생했습니다. mysql은 읽기 권한( )이 있어도 부트스트랩 파일에 액세스할 수 없습니다 chmod 644.

해결책은 chown이 부트스트랩 파일을 mysql에 추가하는 것입니다.

# chown mysql:mysql /tmp/mysql-init-file.sql

관련 정보