CentOS - Percona MySQL - Não está lendo /etc/my.cnf

1

Eu compilei o Percona 5.5 no meu servidor CentOS 6.1 e ele começou bem, no entanto, ele não parece estar lendo meu arquivo /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)

Aqui, espero ver um valor de 'utf8', não latin1.

Atualmente, o /etc/my.cnf é definido como um link simbólico apontado para um arquivo my.cnf que atualmente está no controle de versão, por isso parece:

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

Após algum googling inicial, parece que preciso definir especificamente o caminho do arquivo my.cnf usando o sinalizador --defaults-file=/etc/my.cnf . Que não está sendo definido no momento pelo script do daemon do 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

Então, minha pergunta é: como adicionar a capacidade de passar o --defaults-file=/etc/my.cnf flag para o script /etc/init.d/mysql daemon?

Obrigado.

- UPDATE -

O problema parece ser porque eu tenho a política do selinux configurada como enforcing, e estou tentando fazer symlink my.cnf. Considere o seguinte:

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

E os perms / home / src parecem:

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

Se eu copiar o mesmo arquivo exato para / etc, ele funcionará e, se eu desabilitar o selinux, ele também funcionará. Então tem a ver com o fato de que o mysql está tentando acessar / home / src.

Além disso, fiz uma auditoria2 e ela respondeu com:

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.

Existe uma maneira de fazer isso funcionar sem ter que criar um módulo selinux personalizado? Não consigo alterar o tipo de contexto de /home/src/config/current para mysqld_db_t porque toda vez que eu enviar uma alteração de configuração, um novo diretório será criado com user_home_t , que conterá as alterações mais recentes.

    
por Mike Purcell 17.12.2011 / 20:39

2 respostas

0

Acabei de copiar o my.cnf do caminho de controle de versão para /etc/my.cnf e tudo funciona bem. Indo continuar com isso até que eu possa perder mais tempo e configurar o selinux para permitir que o mysqld acesse / home / src / config.

    
por 16.02.2012 / 00:40
1

Talvez você possa fazer o contrário - tente descobrir qual my.cnf está tentando ler.

ie. mysqld --help --verbose | head -n 30 e procure por algo como

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