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

CentOS - Percona MySQL - Не читает /etc/my.cnf

Я скомпилировал Percona 5.5 на своем сервере CentOS 6.1, и он запускается нормально, однако, похоже, он не читает мой файл /etc/my.cnf.

# In /etc/my.cnf
character_set_server = utf8
collation_server     = utf8_general_ci

mysql> show variables like 'character_set_server';
+----------------------+--------+
| Variable_name        | Value  |
+----------------------+--------+
| character_set_server | latin1 |
+----------------------+--------+
1 row in set (0.00 sec)

Здесь я ожидаю увидеть значение utf8, а не latin1.

В настоящее время /etc/my.cnf установлен как символическая ссылка, указывающая на файл my.cnf, который в настоящее время находится в системе контроля версий, поэтому он выглядит так:

root@host ~/MyFile/Setup # -> ls /etc/my.cnf
lrwxrwxrwx. 1 root root 64 Dec 17 19:05 /etc/my.cnf -> /home/src/config/current/sys/etc/mysql/prod/confs-enabled/my.cnf

После начального поиска в Google мне кажется, что мне нужно специально указать путь к файлу my.cnf, используя --defaults-file=/etc/my.cnf, флаг. Что в настоящее время не устанавливается через скрипт демона CentOS:

ps auxfw > tmp.txt
vi tmp.txt
root     11798  0.0  0.1 106044  1488 pts/0    S    19:09   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/host.localdomain.pid
mysql    11875  0.1  4.3 499560 43936 pts/0    Sl   19:09   0:00  \_ /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/host.localdomain.err --pid-file=/var/lib/mysql/host.localdomain.pid

Итак, мой вопрос: как мне добавить возможность пройти --defaults-file=/etc/my.cnf флаг в скрипт демона /etc/init.d/mysql?

Спасибо.

- ОБНОВИТЬ -

Проблема, по-видимому, в том, что у меня установлена ​​политика selinux, и я пытаюсь создать символическую ссылку на my.cnf. Учтите следующее:

lrwxrwxrwx. 1 root root 72 Feb  7 05:02 my.cnf -> /home/src/config/current/sys/etc/mysql/prod/confs-available/my-large.cnf

И перманент / home / src выглядит так:

drwxrwxr-x. src  src  unconfined_u:object_r:user_home_t:s0 config

Если я копирую тот же самый файл в / etc, он работает, а если я отключу selinux, он также работает. Так что это связано с тем, что mysql пытается получить доступ к / home / src.

Кроме того, я провел audit2why, и он ответил:

Feb  8 17:32:20 app-mldrinks-aa-1 kernel: type=1400 audit(1328722340.203:17): avc:  denied  { read } for  pid=2109 comm="mysqld" name="xvda" dev=devtmpfs ino=5801 scontext=unconfined_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:fixed_disk_device_t:s0 tclass=blk_file

Was caused by:
    Missing type enforcement (TE) allow rule.

    You can use audit2allow to generate a loadable module to allow this access.

Есть ли способ заставить эту работу работать без создания собственного модуля selinux? Я не могу изменить тип контекста /home/src/config/current к mysqld_db_t потому что каждый раз, когда я нажимаю на изменение конфигурации, создается новый каталог с user_home_t, который будет содержать последние изменения.

Возможно, вы могли бы пойти другим путем - попытаться найти, какой файл my.cnf пытается прочитать percona.

т.е. mysqld --help --verbose | head -n 30 и ищи что-то вроде

Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf

В итоге я просто скопировал my.cnf из пути управления версиями в /etc/my.cnf, и все работает нормально. Собираюсь продолжать, пока я не оставлю больше времени и не настрою selinux, чтобы разрешить mysqld доступ к / home / src / config.