Problemas Inicializando o Servidor MariaDB
Se você for usar tabelas que suportem transações (BDB, InnoDB), primeiro deve-se criar um arquivo my.cnf e configurar opções de inicialização para os tipos de tabelas que você planeja usar. Leia Tipos de Tabela do MariaDB.
Geralmente, você inicia o servidor mysqld
de uma das três maneiras:
- Invocando
mysql.server
. Este script é usado primariamente na inicialização e finalização do sistema, e é descrito de forma mais completa em "Inicializando e parando o MariaDB automaticamente.". - Invocando
mysqld_safe
, que tenta determinar as opções apropriadas paramysqld
e então executá-lo com estas opções. Leia "mysqld-safe
, o wrapper domysqld
". - Para o Windows NT/2000/XP, veja "Iniciando o MariaDB no Windows NT, 2000, ou XP".
- Invocando o
mysqld
diretamente.
Quando o daemon mysqld
inicia, ele altera o diretório para o diretório de dados. É neste diretório que ele espera gravar arquivos de log e o arquivo pid (com o ID do processo) e onde ele espera encontrar os bancos de dados.
A localização do diretório de dados é especificada quando a distribuição é compilada. Entretanto, se o mysqld
espera encontrar o diretório de dados em lugar diferente de onde ele realmente está no seu sistema, ele não funcionará corretamente. Se você tiver problemas com caminhos incorretos você pode encontrar quais opções o mysqld
permite e quais são as configurações do caminho padrão chamando o mysqld
com a opção --help
. Você pode sobrescrever os padrões especificando os caminhos corretos como argumentos de linha de comando ao mysqld
. (Estas opções também podem ser usadas com o mysqld_safe
).
Normalmente você precisaria indicar ao mysqld
somente o diretório base sob o qual o MariaDB é instalado. Você pode fazer isso usando a opção --basedir
. Você pode também usar --help
para conferir o efeito das opeções para se alterar o caminho (perceba que --help
deve ser a opção final do comando mysqld
. Por exemplo:
shell> EXECDIR/mysqld --basedir=/usr/local --help
Uma vez que você determina as configurações de caminho que você deseja, inicie o servidor sem a opção --help
.
Qualquer que tenha sido o método utilizado para iniciar o servidor, se houver falha na inicialização, confira o arquivo de log para ver se você pode entender o porquê. Arquivos log estão localizados no diretório dados (normalmente /usr/local/mysql/data
para uma distribuição binária, /usr/local/var
para uma distribuição fonte, \mysql\data\mysql.err
no Windows.) Procure no diretório de dados por arquivos com nomes no formato nome_maquina.err
e nome_maquina.log
onde nome_maquina
é o nome do servidor. Então confira as últimas linhas destes arquivos:
shell>tail nome_maquina.err
shell>tail nome_maquina.log
Se você encontrar algo como o seguinte no arquivo log:
000729 14:50:10 bdb: Recovery function for LSN 1 27595 failed 000729 14:50:10 bdb: warning: ./test/t1.db: No such file or directory 000729 14:50:10 Can't init databases
Significa que você não inicializou o mysqld
com --bdb-no-recover
e o Berkeley DB encontrou algo errado com seus arquivos log quando ele tentou recuperar seus bancos de dados. Para poder continuar, você deve mover o antigo arquivo log Berkeley DB do diretório do banco de dados para outro lugar, onde poderá examiná-los posteriormente. Os arquivos log são nomeados log.0000000001
, onde o número irá incrementar com o tempo.
Se você estiver executando o mysqld
com suporte a tabelas BDB e o mysqld
falhar no início, pode ser devido a alguns problemas com o arquivo de recuperação BDB. Neste caso você pode tentar iniciar o mysqld
com --bdb-no-recover
. Se isto ajudar, então você pode remover todos os arquivos log.*
do diretório de dados e tentar iniciar o mysqld
novamente.
Se você obter o seguinte erro, significa que algum outro programa (ou outro servidor mysqld
) já está usando a porta TCP/IP ou socket mysqld
está tentando usar:
Can't start server: Bind on TCP/IP port: Address already in use ou Can't start server: Bind on unix socket...
Use ps
para ter certeza que você não tem outro servidor mysqld
em execução. Se você não consegue encontrar outro servidor, você pode tentar executar o comando telnet sua_maquina numero_porta_tcp-ip
e apertar ENTER
várias vezes. Se você não obter uma mensagem como telnet: Unable to connect to remote host: Connection refused
, algo está usando a mesma porta TCP/IP que o mysqld
está tentando usar. Veja "Problemas Executando o mysql_install_db
" e "Executando Múltiplos MariaDB Servers na Mesma Máquina".
Se o mysqld
está atualmente em execução, você pode verificar as configurações que ele está usando executando este comando:
shell> mysqladmin variables
ou
shell> mysqladmin -h 'your-host-name' variables
Se você obter o Errcode 13
, que significa Permission denied
, ao iniciar o mysqld
isto significa que você não pode ter o direito de leitura/criação de arquivos no diretório do banco de dados ou log. Neste caso você também deve iniciar o mysqld
como usuário root
ou alterar a permissão para os arquivos e diretórios envolvidos para uqe você tenha o direito de usá-los.
Se o mysqld_safe
inicia o servidor mas você não consegue se conectar a ele, tenha certeza que você tem uma entrada no arquivo /etc/hosts
que parece com isto:
127.0.0.1 localhost
Este problema só ocorre em sistemas que não possuem uma biblioteca thread funcional e para o qual o MariaDB deve estar configurado para usar MIT-pthreads.
Se você não consegue iniciar o mysqld
você pode tentar criar um arquivo para rastreamento de erros (trace) para encontrar o problema. Leia Seção E.1.2, "Criando Arquivos Trace (Rastreamento)".
Se você estiver utilizando tabelas InnoDB, procure pelas opções especificas de inicialização do InnoDB. Leia "Opções de Inicialização do InnoDB".
Se você estiver usando tabelas BDB (Berkeley DB), você deve se familiarizar com as diferentes opções especificas de inicialização do BDB. "Opções de Inicialização do BDB
".