MySQL:mysqld_safe的作品,但无法启动MySQL服务,为什么?

我在Centos 5机器上使用MySQL 5.6.19。

我删除了数据目录,并创build一个新的:

mysql_install_db --user=mysql --datadir=/var/lib/mysql 

当我运行:

 mysqld_safe & 

所有工作正常,但是当我尝试启动服务时,我得到以下错误:

 Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid). 

并且错误日志显示:

 140720 07:30:18 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 140720 07:30:19 mysqld_safe mysqld from pid file /var/lib/mysql/localhost.localdomain.pid ended 

/var/lib/mysql/中的所有文件都由mysql:mysql拥有。 我尝试把my.cnf放在不同的位置,即/etc/ /usr/ /var/lib/mysql/

这是my.cnf:

 [mysqld] innodb_strict_mode = ON innodb_buffer_pool_size = 2G innodb_file_per_table = ON innodb_file_format = Barracuda innodb_compression_level = 9 innodb_flush_method = O_DIRECT innodb_log_files_in_group = 2 innodb_log_file_size = 1G innodb_log_buffer_size = 128M innodb_flush_log_at_trx_commit = 1 innodb_thread_concurrency = 2 max_allowed_packet = 1G tmp_table_size = 1G max_heap_table_size = 1G query_cache_type = 0 query_cache_size = 0 log_output = TABLE slow_query_log = ON log_error = mysql-error.log skip-name-resolve 

有任何想法吗? 谢谢!

这个问题与SELinux有关。 新创build的目录的SELinux权限设置不正确。

我发现通过查看/var/log/messages 。 它有像这样的条目:

 kernel: type=1400 audit(...): avc: denied ... 

为了解决它,我用:

 semanage fcontext -a -t mysqld_db_t "/var/lib/mysql(/.*)?" restorecon -Rv /var/lib/mysql 

第一个命令可能没有必要,因为我得到了

 /usr/sbin/semanage: File context for /var/lib/mysql(/.*)? already defined 

第二个命令做到了。