Não é possível criar / gravar no arquivo '/ mnt / temp / something' (Errcode: 13)

1

Eu alterei o diretório tmp da configuração do mysql para um disco montado e no service mysql restart recebo o seguinte erro:

Can't create/write to file '/mnt/temp/something' (Errcode: 13)

No meu entender, Error Code 13 refere-se ao erro de permissão de arquivo.

Mas parte estranha é:

  1. O proprietário do diretório temporário já é mysql e a permissão do arquivo é 1777

    drwxrwxrwt 2 mysql mysql 4.0K Nov 14 08:34 temp/

  2. Eu posso criar um arquivo no local com um usuário não raiz.

  3. Há 600 Gb de espaço no mnt, então isso não deve ser um problema.

  4. Eu posso criar o diretório tmp facilmente no disco raiz

/etc/mysql/my.cnf :

user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /mnt/mysql
tmpdir          = /mnt/temp
#tmpdir         = /var/tmp

A criação de um diretório tmp em um disco montado não é permitido? Ou então o que estou fazendo errado? Pls ajuda.

    
por Ut xD 14.11.2014 / 09:54

1 resposta

2

Então, isso é um pouco antigo, mas eu resolvi um problema parecido (usando / mnt / tmp como o diretório temporário do sistema) e tive que descobrir por que o MySQL não iniciava.

Provavelmente você está se deparando com as configurações do AppArmor que impedem que o MySQL use diretórios na unidade / mnt. Você precisará adicionar seu novo caminho tmp à lista de armaduras do aplicativo MySQL dos caminhos permitidos.

Se você olhar no seu syslog, provavelmente verá mensagens parecidas com essas sempre que tentar iniciar o servidor mysql:

type=1400 audit(1425343954.203:23): apparmor="DENIED" operation="mknod" parent=1 profile="/usr/sbin/mysqld" name="/mnt/tmp/ibMXP5lg" pid=16418 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=106 ouid=106

Nesse caso, você precisará editar o arquivo:

/etc/apparmor.d/usr.sbin.mysqld

Adicione as linhas:

/mnt/tmp/ r,
/mnt/tmp/** rwk,

para o arquivo. Então apenas reinicie o AppArmor:

$ sudo service apparmor restart
    
por 03.03.2015 / 19:05