Introdução
Este artigo é para usuários que estão tentando entrar no MySQL com uma senha correta, mas estão recebendo um erro: “Erro 1045: Acesso negado para usuário (usando senha: SIM)”
Se você esqueceu sua senha do MySQL root, por favor veja este artigo:
- Como redefinir a senha root do MySQL.
Se você está tentando entrar como root via phpMyAdmin, por favor veja:
- Não consigo entrar no phpMyAdmin: mysqli_real_connect(): (HY000/1698): Acesso negado para o usuário ‘root’@’localhost’
Understanding MySQL Users and Hosts
MySQL restringe o acesso do usuário com base no valor host
de um usuário. Por padrão, o valor host
para a conta root e novos usuários é definido como localhost
, o que significa que você só pode fazer login via máquina local ou via phpMyAdmin se instalado no mesmo localhost. Se você tentar entrar em uma conta localhost
remotamente, ele poderá rejeitar sua senha correta com “Acesso negado para usuário (usando senha: SIM)”.
Se olharmos esta simples lista de usuários MySQL abaixo como exemplo:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |
Acima temos três usuários MySQL com valores diferentes de host
.
Vejamos alguns cenários onde a sua senha correta pode ser rejeitada dependendo do valor:host
>
- Utilizador
- ✅ Pode fazer login a partir de
localhost
, ou seja, a máquina na qual o serviço MySQL está rodando. - ✅ Pode iniciar sessão a partir do phpMyAdmin se instalado no mesmo localhost.
- ❌Cannot iniciar sessão remotamente e obterá “Acesso negado para utilizador (usando palavra-passe: SIM)”.
- ✅ Pode fazer login a partir de
- Utilizador
- ✅ Pode entrar apenas a partir do endereço IP
10.0.53.185
. - ❌ Não pode entrar a partir de qualquer outro endereço IP “Acesso negado ao utilizador (usando a palavra-passe: SIM)”.
- ❌ Não é possível iniciar sessão a partir do localhost “Acesso negado para utilizador (usando a palavra-passe: SIM)”.
- ❌ Não é possível iniciar sessão a partir do phpMyAdmin “Acesso negado para utilizador (usando a palavra-passe: SIM)”.
- ✅ Pode entrar apenas a partir do endereço IP
- Usuário
%
- ✅ Pode fazer login de qualquer lugar (
%
é um wildcard).
- ✅ Pode fazer login de qualquer lugar (
Mudar o valor do host de um usuário MySQL
Pode alterar o valor do host de um usuário usando a conta raiz MySQL ou qualquer conta com privilégios de super usuário. Isto pode ser feito via linha de comando ou phpMyAdmin.
Via Command Line
Você precisará acessar seu banco de dados MySQL usando o root ou um superusuário que tenha acesso à tabela MySQL Users.
A conta root é, por padrão, acessível apenas pelo localhost, então você pode obter “Acesso negado para usuário (usando senha: SIM)” se você tentar fazer o login remotamente. Em tal eventualidade, você precisará de alguma forma obter acesso local ao servidor.
Para entrar em uma base de dados MySQL local:
mysql -u root -p
Para entrar em uma base de dados MySQL remota, simplesmente substitua hostname_or_ip
pelo seu próprio.
mysql -u root -h hostname_or_ip -p
Após entrar no MySQL, liste todos os usuários MySQL e seus hosts correspondentes em sua base de dados.
SELECT User,Host FROM mysql.user;
Resultado:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |+------------------+-------------+3 rows in set (0.00 sec)
Acima podemos ver uma lista de usuários MySQL e seus hosts.
Se quisermos fazer login usando test-user1
remotamente de qualquer lugar, devemos alterar o valor do host para o wildcard %
, que permitirá login remoto de qualquer lugar. Para maior segurança, você pode mudar isso para um endereço IP.
No exemplo abaixo, estamos mudando o host para test-user1
de localhost
para %
%
significa wildcard e permitirá que este usuário faça login remotamente de qualquer lugar.
RENAME USER 'test-user1'@'localhost' TO 'test-user1'@'%';
Tem de descarregar os privilégios do MySQL para que as alterações tenham efeito.
FLUSH PRIVILEGES;
Tente agora entrar novamente remotamente.
Via phpMyAdmin
Entrar no phpMyAdmin usando sua conta raiz ou uma conta com privilégios de super usuário.
>
- Ace logado no phpMyadmin, clique no banco de dados
mysql
na coluna à esquerda. - Clique na guia SQL.
- Digite ou cole na caixa de consulta SQL:
SELECT User,Host FROM mysql.user;
para listar todos os usuários MySQL no banco de dados. - Click Go to run the query.
Você deve agora ver uma lista de todos os usuários MySQL e seus hosts correspondentes.
Para alterar o valor do host de um usuário MySQl:
- Clique duas vezes no campo host ao lado do usuário que você deseja alterar (em vermelho abaixo).
- Type
%
para permitir que qualquer pessoa entre neste usuário de qualquer lugar. Você também pode alterar isso para um IP remoto para melhor segurança. - Pressione
ENTER
no seu teclado para salvar as alterações.
Você ainda não terminou. Agora você deve lavar os privilégios do MySQL.
- Clique novamente na guia SQL
- Digite ou cole na caixa de consulta SQL:
FLUSH PRIVILEGES;
- Clique em Go para executar a consulta.
Você deve agora ser capaz de fazer o login remotamente.
Deixe-me saber se isto ajudou. Me siga no Twitter, Facebook e YouTube, ou 🍊 me compre um smoothie.
p.s. Aumentei minha receita do AdSense em 200% usando AI 🤖. Leia a minha revisão Ezoic para saber como.