无法打开 MySQL 中的引导文件

无法打开 MySQL 中的引导文件

安装 MySQL Ver. 后5.7.10 对于 RH/Oracle Linux 我收到一条错误,指出在初始化过程中未找到引导程序文件。我不确定这可能来自哪里,因为它是全新安装,并且错误尚未涵盖。

安装程序已正确设置该文件夹的权限:

# 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 测试 root 的密码:

mysql -u root -p

答案2

这是一个与SELinux相关的Bug,你可以查看详情这里

您可以使用以下步骤:

步骤1:使用以下命令禁用SELinux:

setenforce 0

Step2:启动mysql服务如下:

service mysqld start

现在应该没问题了。

步骤 3:使用以下命令更改 root 密码(同时保护它):

mysql_secure_installation

提供mysql提供的密码(检查mysqld.log),并创建新密码。

第四步:使用以下命令再次启用 SELinux 功能:

setenforce 1

请注意,如果您停止/重新启动/启动 mysql 服务,则无需禁用它。

答案3

得到同样的错误:mysql无法访问引导文件,即使它有读权限(chmod 644)。

解决方案是将chown这个引导文件添加到 mysql:

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

相关内容