Назад | Перейти на главную страницу

MySQL: mysqld_safe работает, но не может запустить службу mysql, почему?

Я использую MySQL 5.6.19 на машине Centos 5.

Я удалил каталог данных и создал новый с:

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. Разрешения 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

Вторая команда сделала свое дело.