terça-feira, abril 14, 2009

Resolvendo erro de conexao no MySQL

Um caso muito comum para quem vai usar o mysql é: criar o banco de dados, criar o usuário que terá acesso aos objetos desta base e por fim dar as permissões de acesso ao mesmo.

Aí, ao tentarmos conectar na base não conseguimos e o mysql exibe o erro
ERROR 1045 (28000): Access denied for user 'dbuser'@'localhost' (using password: YES)
ou
ERROR 1045 (28000): Access denied for user 'dbuser'@'localhost' (using password: NO)
dependendo de termos fornecido ou não uma senha para o usuário.

Com o resolver isso?

Supondo que a base seja a dbtest e que o usuário do banco se chame dbuser. Provavelmente tu o criaste assim:

SET PASSWORD FOR dbuser = PASSWORD("dbpassword");
E aí tu deste os direitos de acesso à base desse jeito:
GRANT ALL PRIVILEGES ON dbtest.* TO dbuser IDENTIFIED BY 'dbpassword';
O problema é que para que o usuário se conecte a partir do um host qualquer, tu deves explicitamente fornecer permissões à ele.

Ou seja, as permissões de acesso devem ser dadas por host. Todos os acessos a partir de endereços que não tenham sido explicitamente permitidos serão negados.

Assim, para permitir que o usuário dbuser se conecte ao banco a partir do computador local (localhost), o comando a ser dado é:
GRANT ALL PRIVILEGES ON dbtest.* to dbuser@localhost identified by "dbpassword";
ou
GRANT ALL PRIVILEGES ON dbtest.* to dbuser@localhost;
dependendo do fato do usuário ter senha ou não.

Tu podes obter mais informações sobre como usar o mysql com qualquer um destes livros aqui.

Agora, se for para comprar apenas um livro, o que vai responder a TODAS as tuas dúvidas, recomendo o MySQL: a Bíblia, do Steve Suehring.

Espero que este artigo te ajude.

Nenhum comentário: