Problemas Executando o mysql_install_db
O propósito do script mysql_install_db
é gerar novas tabelas de privilégios. Ele não irá afeter nenhum outro dado! Ele também não fará nada se você já tem a tabela de privilégio do MariaDB instalada.
Se você deseja refazer suas tabelas de privilégios, você deve desligar o servidor mysqld
, se ele já está executando, então faça assim:
mv diretorio-dados-mysql/mysql diretorio-dados-mysql/mysql-old mysql_install_db
Esta seção relaciona alguns problemas que podem ser encontrados ao executar mysql_install_db
:
mysql_install_db
não instala as tabelas de permissõesVocê pode descobrir que o
mysql_install_db
falha ao instalar as tabelas de permissões e termina depois de mostrar as seguintes mensagens:starting mysqld daemon with databases from XXXXXX mysql daemon ended
Neste caso, você deve examinar o arquivo de log com muito cuidado! O log deve se encontrar no diretório
XXXXXX
nomeado pela mensagem de erro, e deve indicar porquemysqld
não inicializa. Se você não entende o que aconteceu, inclua o log quando você postar um relato de erro usandomysqlbug
! Leia "Como relatar erros ou problemas".- Já existe um daemon
mysqld
sendo executadoNeste caso, provavelmente não será necessário executar o
mysql_install_db
. Você deve executar omysql_install_db
somente uma vez, quando você instalar o MariaDB da primeira vez. - Instalair um segundo daemon
mysqld
não funciona quando um daemonestiver em execução.
Isto pode acontecer quando você já tiver uma instalação do MariaDB existente, mas deseja colocar uma nova instalação em um diferente lugar (por exemplo, para testes, ou talvez você simplesmente deseja executar duas instalações ao mesmo tempo). Geralmente o problema que ocorre quando você tenta executar o segundo servidor é que ele tenta usar o mesmo socket e porta que o outro. Neste caso você irá obter a mensagem de erro:
Can't start server: Bind on TCP/IP port: Address already in use
ouCan't start server: Bind on unix socket...
. Leia "Executando Múltiplos MariaDB Servers na Mesma Máquina". - Você não tem direito de escrita no diretório
/tmp
Se você não tem direito de escrita para criar um arquivo socket no local padrão (em
/tmp
) ou permissão para criar arquivos temporáris em/tmp,
você irá obter um erro quando executarmysql_install_db
ou quando iniciar ou usarmysqld
.Você pode especificar socket e diretório temporário diferentes, como segue:
shell>
TMPDIR=/algum_dir_tmp/
shell>MYSQL_UNIX_PORT=/algum_dir_tmp/mysqld.sock
shell>export TMPDIR MYSQL_UNIX_PORT
algum_dir_tmp
deve ser o caminho para o mesmo diretório no qual você tem permissão de escrita. Leia Apêndice F, Variáveis de Ambientes do MariaDB.Depois disto você deve estar apto para executar
mysql_install_db
e iniciar o servidor com estes comandos:shell>
scripts/mysql_install_db
shell>BINDIR/mysqld_safe &
mysqld
falha imediatamenteSe você estiver executando RedHat Versão 5.0 com uma versão de
glibc
anterior a 2.0.7-5 você deve ter certeza que você instalou todos os patches para aglibc
! Existe muita informação sobre isto nos arquivos das listas de mensagens do MariaDB. Links para os arquivos de correio estão disponíveis online em http://lists.mysql.com/. Veja também "Notas Linux (Todas as versões)".Você pode também iniciar o
mysqld
manualmente usando a opção--skip-grant-tables
e adicionar a informação de privilégios usando oMariaDB
:shell>
BINDIR/mysqld_safe --skip-grant-tables &
shell>BINDIR/mysql -u root mysql
Do
MariaDB
, execute manualmente os comandos SQL emmysql_install_db
. Tenha certeza de executarmysqladmin flush_privileges
oumysqladmin reload
após dizer ao servidor para recarregar as tabelas de permissões.