Não é possível criar o arquivo /var/lib/mysql/user.lower-test


11

O banco de dados MySQL está livre de problemas há alguns meses. Hoje, quando verifiquei os pacotes atualizáveis ​​usando o Synaptic Package Manager, ele veio com os vários componentes do MySQL (-common, -client, -server, etc). Portanto, decidi atualizar (esqueci de anotar a versão instalada, mas acho que era a 5.6.21) para a 5.6.25-1-ubuntu2.0. Depois, quando fui consultar o banco de dados, recebi a mensagem: -

Error occured: Can't connect to MySQL server on '127.0.0.1' (111)

Eu então encontrei o servidor não estava sendo executado. No arquivo de log, gosto que a mensagem: -

Can't create file /var/lib/mysql/user.lower-test

Passei uma hora pesquisando on-line e, embora o problema tenha sido relatado anteriormente, não o vi no contexto de um problema de 'pós-atualização', tão inseguro quanto à minha próxima etapa.

Respostas:


6

Esse problema parece ter problemas de permissão ou alterar os diretórios de dados do mysql para outro local que não seja o / var / lib / mysql.

Tente rodar com o sudo

Parece que / var / lib / mysql pertence ao usuário mysql e o grupo também está definido como mysql.

$ sudo chown -R mysql /var/lib/mysql
$ sudo chgrp -R mysql /var/lib/mysql
$ sudo chmod 755 /var/lib/mysql

Você verificou se o diretório / var / lib / mysql realmente existe e corresponde ao seu diretório de dados? Caso contrário, provavelmente você deve especificar o parâmetro datadir na seção mysqld

[mysqld]
datadir=/var/lib/mysql

Então você pode escolher entre configurar o apparmor para permitir que o MySQL leia \ execute \ modifique o novo diretório de dados e subdiretórios ou, por seu próprio risco, você pode remover o apparmor. Você pode precisar ser root para fazer o seguinte:

/etc/init.d/apparmor stop
/etc/init.d/apparmor teardown
update-rc.d -f apparmor remove
apt-get purge apparmor
reboot

Eu passei por tudo isso, mas sem sucesso. Tendo backups, decidi reinstalar e tudo funciona, exceto um problema que tive. Mas é o problema Linux ou é MySQL ...
Michaeljohn

@MichaelJohn não pode dizer nada. poderia ser apparmor ou corrupção pacote mysql
Hitesh Mundra

No Ubuntu Xenial: apparmoré automaticamente instalado e ativado quando você instala mysql-server-5.6. Mesmo se você o desativou anteriormente. Você não pode remover o apparmorpacote porque é uma dependência de mysql-server-5.6. Você pode resolver o erro "Não é possível criar o arquivo /var/lib/mysql/user.lower-test" fazendoservice apparmor stop; service apparmor teardown; update-rc.d -f apparmor remove
Jeroen Vermeulen - MageHost

5

Encontrei este problema ao tentar executar várias instâncias do MySQL, mas em vez de remover o apparmor, atualizei o arquivo usr.sbin.mysqld:

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

Por exemplo, é assim que meu arquivo se parece e, depois de adicionar as pastas que precisam de permissões de gravação, tudo funcionou como deveria.

/usr/sbin/mysqld {

  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,

  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/*.cnf r,
  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  /var/lib/mysql/ r,
  /var/lib/mysql/** rwk,
  /var/lib/mysql1/ r,
  /var/lib/mysql1/** rwk,
  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid rw,
  /var/run/mysqld/mysqld.sock w,
  /var/run/mysqld/mysqld1.pid rw,
  /var/run/mysqld/mysqld1.sock w,
  /run/mysqld/mysqld.pid rw,
  /run/mysqld/mysqld.sock w,

  /sys/devices/system/cpu/ r,

}

1
Isso funcionou para mim também. Eu tive que reiniciar o servidor para que isso funcionasse - apenas parar e reiniciar o AppArmour não funcionou.
MikeHoss #

3

O problema aconteceu comigo quando tentei mover / var / lib / mysql para outro disco e substituir o diretório original por um link simbólico.

O Apparmor negará o acesso nesta configuração, consulte

por que isso é considerado não um bug pelos desenvolvedores do Apparmor. A solução alternativa é usar uma montagem de ligação. Vejo

para uma explicação.

assim

mount --bind /newmysqldatadir /var/lib/mysql
service mysql start

corrigiu o problema para mim.


1

Eu tive um problema parecido. Reinstalei o Ubuntu Server na minha máquina, fiz um backup completo do / etc / no disco rígido, depois de reinstalar fiz uma cópia de todos os arquivos importantes de / drive / etc / para os meus sistemas / etc.

Enquanto isso, criei um bak para o arquivo usr.sbin.mysqld chamado usr.sbin.mysqld.bak e o mantive no mesmo diretório /etc/apparmor.d/.

Após uma pesquisa mais aprofundada, encontrei esta postagem no blog: https://blogs.oracle.com/jsmyth/apparmor-and-mysql

Instalei o apparmor-utils e tentei reclamar em / usr / sbin / mysqld e ele disse que eu tenho 2 configurações do apparmor definidas (ambos os meus arquivos).

Eu sei que pode não ser o problema que você está enfrentando, mas apenas por uma questão de clareza, não seja tão burro quanto eu, criando um arquivo de backup no mesmo diretório do diretório apparmor sbin.


0

Verifique também se sua partição não está cheia, como foi o meu caso.

Por um motivo desconhecido, mover os dados para outra partição também não funcionou.

Portanto, para uma solução rápida, em vez de mexer com llvm ou gparted, reduzi meu /swapfiletamanho.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.