Acabei de instalar uma nova cópia do Ubuntu 10.04.2 LTS em uma nova máquina. Entrei no MySQL como root:
david@server1:~$ mysql -u root -p123
Eu criei um novo usuário chamado repl. Deixei o host em branco, para que o novo usuário possa ter acesso a partir de qualquer local.
mysql> CREATE USER 'repl' IDENTIFIED BY '123';
Query OK, 0 rows affected (0.00 sec)
Verifiquei a tabela de usuários para verificar se a nova substituição de usuário foi criada corretamente.
mysql> select host, user, password from mysql.user;
+-----------+------------------+-------------------------------------------+
| host | user | password |
+-----------+------------------+-------------------------------------------+
| localhost | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| server1 | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| 127.0.0.1 | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| ::1 | root | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
| localhost | | |
| server1 | | |
| localhost | debian-sys-maint | *27F00A6BAAE5070BCEF92DF91805028725C30188 |
| % | repl | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+-----------+------------------+-------------------------------------------+
8 rows in set (0.00 sec)
Então saio, tento fazer login como usuário repl, mas o acesso é negado.
david@server1:~$ mysql -u repl -p123
ERROR 1045 (28000): Access denied for user 'repl'@'localhost' (using password: YES)
david@server1:~$ mysql -urepl -p123
ERROR 1045 (28000): Access denied for user 'repl'@'localhost' (using password: YES)
david@server1:~$
Por que o acesso é negado?
Respostas:
O motivo pelo qual você não conseguiu fazer o login
repl@'%'
está relacionado ao protocolo de autenticação de usuário do MySQL . Não cobre padrões de usuários como se poderia acreditar.Veja como você tentou fazer login
Como você não especificou um endereço IP, o mysql assume que host é localhost e tenta se conectar através do arquivo de soquete. É por isso que a mensagem de erro diz
Access denied for user 'repl'@'localhost' (using password: YES)
.Alguém poderia pensar
repl@'%'
que permitiriarepl@localhost
. De acordo com a forma como o MySQL realiza a autenticação do usuário , isso simplesmente nunca acontece. Fazer isso ajudaria?Acredite ou não, o mysql tentaria
repl@localhost
novamente. Por quê? O cliente mysql vê127.0.0.1
e tenta o arquivo de soquete novamente.Tente assim:
Isso forçaria o cliente mysql a usar o protocolo TCP / IP explicitamente. Não teria outra opção senão o usuário
repl@'%'
.fonte
Você deve emitir para localhost específico a ele.
E tente se conectar.
fonte
O problema são essas duas contas, adicionadas por padrão.
http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html
Um nome de usuário em branco é um curinga, portanto, não importa qual conta você use, ele corresponderá a esse usuário se o MySQL achar que você está se conectando a partir do host local ou do nome do servidor local (servidor1 nesse caso) ... já que eles não têm senha, nenhum a senha que você tenta está errada. A autenticação do usuário tenta apenas a primeira correspondência, para que o usuário que você criou nunca seja notado quando o host for host local (ou o nome do servidor).
Exclua esses dois do
mysql
.user
mesa e depoisFLUSH PRIVILEGES;
.Ou, o script mysql_secure_installation pode fazer isso por você, embora eu prefira fazer as coisas manualmente.
http://dev.mysql.com/doc/refman/5.5/en/mysql-secure-installation.html
fonte
Verifique se todos os campos no conector estão configurados com os detalhes corretos
host = "host local", usuário = "Usuário correto", senha = "coRrectPasswd", banco de dados = "CorreCTDB"
Verifique também se há erros em maiúsculas e minúsculas - 1045 não é um erro de sintaxe, mas está relacionado aos detalhes incorretos no conector
fonte
O banco de dados pode não estar configurado ainda, basta emitir uma chamada sem argumento:
Se o Mysql precisar definir uma senha root, você poderá usar
fonte
Isso pode ser um problema com a corrupção do seu banco de dados mysql. As tabelas dentro do banco de dados mysql, como a tabela user, podem ficar corrompidas e causar emissão.
Por favor, verifique esses
myisamchk / var / lib / mysql / mysql / * .MYI
Normalmente, ao verificar ou corrigir tabelas myisam, gostaríamos de remover o mysql primeiro. Se esse problema ainda não resolver, tente isso também.
Se eles estiverem corrompidos, você poderá corrigi-los usando
myisamchk --silent --force --fast /path/table-name.MYI
Obrigado,
Masood
fonte