Я использую 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
Вторая команда сделала свое дело.