MySQL:mysqld_safe 可以工作但无法启动 mysql 服务,为什么?

MySQL:mysqld_safe 可以工作但无法启动 mysql 服务,为什么?

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

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

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

有什么想法吗?谢谢!

答案1

该问题与 SELinux 有关。新创建目录的 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

第二条命令起了作用。

相关内容