Inicie o Mysql / Mariadb no Fedora com falha

3

falhou ao iniciar o mysql no Fedora 17. Estou usando root account para executar os comandos abaixo e o selinux está desativado.

service mysqld start
Redirecting to /bin/systemctl start  mysqld.service
Job for mariadb.service failed. See 'systemctl status mariadb.service' and 'journalctl -xn' for details.

systemctl status mariadb.service
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)
   Active: failed (Result: exit-code) since Tue 2014-09-23 11:29:32 SGT; 10s ago
  Process: 4251 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 4250 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=1/FAILURE)
  Process: 4222 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 4250 (code=exited, status=1/FAILURE)

Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Running position recovery with --log_error='/var/...er.pid'
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 182: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Failed to recover position:
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: ''
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Sep 23 11:29:32 acer-4930g systemd[1]: mariadb.service: control process exited, code=exited status=1
Sep 23 11:29:32 acer-4930g systemd[1]: Failed to start MariaDB database server.
Sep 23 11:29:32 acer-4930g systemd[1]: Unit mariadb.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.

journalctl -xn
-- Logs begin at Sat 2014-04-26 15:18:22 SGT, end at Tue 2014-09-23 11:29:34 SGT. --
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 182: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Failed to recover position:
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: ''
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Sep 23 11:29:32 acer-4930g systemd[1]: mariadb.service: control process exited, code=exited status=1
Sep 23 11:29:32 acer-4930g systemd[1]: Failed to start MariaDB database server.
-- Subject: Unit mariadb.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mariadb.service has failed.
-- 
-- The result is failed.
Sep 23 11:29:32 acer-4930g systemd[1]: Unit mariadb.service entered failed state.
Sep 23 11:29:34 acer-4930g PackageKit[4204]: daemon quit

getenforce 
Permissive

Em seguida, alterei a propriedade do arquivo de log mariadb de root para mysql , mas ainda falhei:

[root@acer-4930g ~]# ls -ld /var/log/mariadb/
drwxr-x---. 2 mysql mysql 4096 Sep 23 11:02 /var/log/mariadb/
[root@acer-4930g ~]# ls -l /var/log/mariadb/mariadb.log 
-rw-rw----. 1 root root 554 Sep 23 11:02 /var/log/mariadb/mariadb.log
[root@acer-4930g ~]# chown -R mysql:mysql /var/log/mariadb -chR
[root@acer-4930g ~]# systemctl restart mariadb.service 
Job for mariadb.service failed. See 'systemctl status mariadb.service' and 'journalctl -xn' for details.

[root@acer-4930g ~]# systemctl status mariadb.service 
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled)
   Active: failed (Result: exit-code) since Tue 2014-09-23 14:58:09 SGT; 3min 4s ago
  Process: 6890 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 6889 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=1/FAILURE)
  Process: 6861 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 6889 (code=exited, status=1/FAILURE)

Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade ...ate it.
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Aria engine is not enabled or did not start. The Aria engine...-tables
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Aborting
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08  InnoDB: Starting shutdown...
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:09  InnoDB: Shutdown completed; log sequence number 1597945
Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:09 [Note] /usr/libexec/mysqld: Shutdown complete'
Sep 23 14:58:09 acer-4930g systemd[1]: mariadb.service: main process exited, code=exited, status=1/FAILURE
Sep 23 14:58:09 acer-4930g systemd[1]: mariadb.service: control process exited, code=exited status=1
Sep 23 14:58:09 acer-4930g systemd[1]: Failed to start MariaDB database server.
Sep 23 14:58:09 acer-4930g systemd[1]: Unit mariadb.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.
    
por Xianlin 23.09.2014 / 05:38

1 resposta

2

Permissões?

Você está mostrando o comando service mysqld start , mas prefixando isso com sudo ? Eu suspeito que você não tem permissões para iniciar este serviço com base no fato de que você está recebendo essas "permissões negadas mensagens" na saída que você incluiu no seu Q.

Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 138: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: /usr/bin/mysqld_safe: line 182: /var/log/mariadb/mariadb.log: Permission denied
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: 140923 11:29:32 mysqld_safe WSREP: Failed to recover position:
Sep 23 11:29:32 acer-4930g mysqld_safe[4250]: ''

Se você estiver realmente usando sudo , então eu vou voltar minha atenção para o diretório & arquivos mencionados nas mensagens de logs acima. Concentre-se neste diretório / arquivo:

$ ls -ld /var/log/mariadb
$ ls -l /var/log/mariadb/mariadb.log

Encontrei esses comandos neste AskFedora Q & A intitulado: O serviço mariadb não inicia: permissão negada , que deve corrigir seu problema:

$ sudo chown mysql:mysql /var/log/mariadb -chR

seguido por:

$ sudo systemctl restart mariadb.service && \
    sudo systemctl status mariadb.service

Parece que os arquivos de log do MariaDB não permitem que o usuário, mysql acesso a eles, os comandos acima corrigirão este problema.

DB corrompido?

Se você ainda continuar tendo problemas e se deparar com erros como:

Sep 23 14:58:09 acer-4930g mysqld_safe[6889]: 140923 14:58:08 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade ...ate it.

Você também pode confirmar agora que o problema de permissões acima foi resolvido, no arquivo de log do MariaDB para mensagens assim:

Version check failed. Got the following error when calling the 'mysql' command line client
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
FATAL ERROR: Upgrade failed

Ou a mensagem basicamente diz que houve problemas na atualização do seu banco de dados MySQL para um banco de dados da Maria DB. Se é um DB com nada que você se importa nele, você pode simplesmente movê-lo ou removê-lo. Isso exigirá que você primeiro remova o pacote MariaDB e reinstale-o.

Exemplo

$ sudo yum remove mariadb-server

### To remove
$ sudo rm -rf /usr/lib/mysql

### To move
$ sudo mv /usr/lib/mysql /usr/lib/mysql.orig

$ sudo yum install mariadb-server

NOTA: Fonte da dica acima: Trouble iniciando o serviço mariadb .

Uma coisa com a dica acima que não posso confirmar é se o diretório para mover / remover é /usr/lib/mysql . ou /var/lib/mysql . Eu não tenho certeza se isso 'um erro de digitação nessa dica ou não. Então, eu faria o acima com /usr/lib/mysql primeiro e, se não funcionar, repita as etapas, mas com /var/lib/mysql . Eu usaria o método remove primeiro, se as coisas funcionarem bem, volte e remova o diretório corrompido.

OBSERVAÇÃO: /var/lib/mysql é onde os arquivos do BD residem, o diretório /usr/lib/mysql é onde os vários plugins estão vivos.

    
por 23.09.2014 / 06:32