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 MySQL 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ões
Você 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 porque mysqld
não
inicializa. Se você não entende o que aconteceu, inclua o
log quando você postar um relato de erro usando
mysqlbug
! See
Secção 1.7.1.3, “Como relatar erros ou problemas”.
Já existe um daemon
mysqld
sendo executado
Neste caso, provavelmente não será necessário executar o
mysql_install_db
. Você deve executar o
mysql_install_db
somente uma vez, quando
você instalar o MySQL da primeira vez.
Instalair um segundo daemon
mysqld
não funciona quando um
daemon
estiver em execução.
Isto pode acontecer quando você já tiver uma instalação
do MySQL 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
ou
Can't start server: Bind on unix
socket...
. See Secção 4.2, “Executando Múltiplos MySQL 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
executar mysql_install_db
ou quando
iniciar ou usar mysqld
.
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.
See Apêndice F, Variáveis de Ambientes do MySQL.
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
imediatamente
Se 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 a
glibc
! Existe muita informação sobre
isto nos arquivos das listas de mensagens do MySQL. Links
para os arquivos de correio estão disponíveis online em
http://lists.mysql.com/.
Veja também Secção 2.6.2, “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 o mysql
:
shell>BINDIR/mysqld_safe --skip-grant-tables &
shell>BINDIR/mysql -u root mysql
Do mysql
, execute manualmente os comandos
SQL em mysql_install_db
. Tenha certeza de
executar mysqladmin flush_privileges
ou
mysqladmin reload
após dizer ao servidor
para recarregar as tabelas de permissões.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.