Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 未知/不受支持的存储引擎:InnoDB_Mysql_Centos_Selinux - Fatal编程技术网

Mysql 未知/不受支持的存储引擎:InnoDB

Mysql 未知/不受支持的存储引擎:InnoDB,mysql,centos,selinux,Mysql,Centos,Selinux,我正在设置复制服务器,当我第一次尝试启动mysql服务时,它失败了: [root@ravioli mysql]# service mysqld start MySQL Daemon failed to start. Starting mysqld: [FAILED] [root@ravioli mysql]# tail /var/log/mysqld.log 151013 13:41:27 [ERROR] Pl

我正在设置复制服务器,当我第一次尝试启动mysql服务时,它失败了:

[root@ravioli mysql]# service mysqld start
MySQL Daemon failed to start.
Starting mysqld:                                           [FAILED]
[root@ravioli mysql]# tail /var/log/mysqld.log 
151013 13:41:27 [ERROR] Plugin 'InnoDB' init function returned error.
151013 13:41:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
/usr/libexec/mysqld: File '/databases/mysql/mysql_slow_queries.log' not found (Errcode: 13)
151013 13:41:27 [ERROR] Could not use /databases/mysql/mysql_slow_queries.log for logging (error 13). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it.
151013 13:41:27 [ERROR] Unknown/unsupported storage engine: InnoDB
151013 13:41:27 [ERROR] Aborting

151013 13:41:27 [Note] /usr/libexec/mysqld: Shutdown complete

151013 13:41:27 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
我确认用户
mysql
可以看到并能够写入
/databases/mysql/mysql\u slow\u querys.log

然后我检查了
getenforce
,看到它被设置为
Enforcing

我如何配置MySQL来很好地使用SELinux

好的,实际上是这样

默认情况下,
SELinux
强制执行的
,这可以防止在文件系统上进行意外写入。我只需要告诉SELinux,MySQL可以写入非标准目录。也就是说:

[root@ravioli]# semanage fcontext -a -t mysqld_db_t "/databases/mysql(/.*)?"
-bash: semanage: command not found.
德普。要安装
semanage
,请使用以下命令:

yum install policycoreutils-python
现在再次运行该命令。这可能需要一些时间

[root@ravioli]# semanage fcontext -a -t mysqld_db_t "/databases/mysql(/.*)?"
通过查看以下配置文件,检查是否为此新目录配置了SELinux:

[root@ravioli]#  grep -i mysql /etc/selinux/targeted/contexts/files/file_contexts.local

/databases/mysql(/.*)?    system_u:object_r:mysqld_db_t:s0
可以添加其他目录,例如,如果您在某处有一个专用tmp目录

[root@ravioli]# semanage fcontext -a -t mysqld_db_t "/databases/mysql_tmp(/.*)?"
再次检查配置:

[root@ravioli]# grep -i mysql /etc/selinux/targeted/contexts/files/file_contexts.local

/databases/mysql(/.*)?    system_u:object_r:mysqld_db_t:s0
/databases/mysql_tmp(/.*)?    system_u:object_r:mysqld_db_t:s0
最后,使用
restorecron

restorecon -R -v /www/databases/mysql/
在我的设置中

restorecon -R -v /www/databases/mysql_tmp/
现发行:

service mysqld start
贝尼

Starting mysqld:         [  OK  ]

这解决了我的问题

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoremove

sudo rm /var/lib/mysql/ib_logfile0
sudo rm /var/lib/mysql/ib_logfile1

sudo apt-get install mysql-server

我只需要删除两个文件,它们是:

ib_logfile0


然后回到mysql,一切正常

也许第二个自动删除应该是自动清理?对于在mac上使用自制软件的人,我在
/usr/local/var/mysql/ib_logfile0
/usr/local/var/mysql/ib_logfile1
找到了这些文件的位置。删除它们解决了问题。我还必须删除
ibdata1
文件和目录
performance\u schema
ib_logfile1