mysql - senha - xampp access denied for user root '@' localhost using password yes




Erro no MySQL:: 'Acesso negado para o usuário' root '@' localhost ' (8)

Para usuários do Ubuntu / Debian

Execute o seguinte para conectar-se como root (sem nenhuma senha)

sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf

Se você não deseja adicionar --defaults-file toda vez que quiser se conectar como root , pode copiar /etc/mysql/debian.cnf no seu diretório pessoal:

sudo cp /etc/mysql/debian.cnf ~/.my.cnf

e depois:

sudo mysql

$ ./mysqladmin -u root -p ' redigido '
Digite a senha:

mysqladmin: falha na conexão com o servidor em 'localhost':
'Acesso negado para o usuário' root '@' localhost '(usando a senha: YES)'

Como posso consertar isso?


  1. Abra e edite /etc/my.cnf ou /etc/mysql/my.cnf , dependendo da sua distribuição.
  2. Adicione skip-grant-tables em [mysqld]
  3. Reinicie o Mysql
  4. Você deve conseguir fazer login no mysql agora usando o comando abaixo mysql -u root -p
  5. Execute mysql> flush privileges;
  6. Defina a nova senha pelo ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
  7. Volte para /etc/my.cnf e remova / comente skip-grant-tables
  8. Reinicie o Mysql
  9. Agora você poderá fazer o login com a nova senha mysql -u root -p

Eu fiz isso para definir minha senha root na configuração inicial do MySQL no OSx. Abra um terminal.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo mysqld_safe --skip-grant-tables

Feche o terminal e abra um novo terminal. E os seguintes são trabalhados no Linux, para definir a senha root.

mysql -u root

FLUSH PRIVILEGES;

(sudo mysqld_safe --skip-grant-tables: Isso não funcionou para mim na primeira vez. Mas, na segunda tentativa, foi o sucesso.)

Então entre no MySQL

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

Agora mude a senha:

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

Reinicie o MySQL:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Eu tentei várias etapas para corrigir esse problema. Existem tantas fontes para possíveis soluções para esse problema que é difícil filtrar o sentido das bobagens. Finalmente encontrei uma boa solução here :

Etapa 1: identificar a versão do banco de dados

$ mysql --version

Você verá uma saída como esta com o MySQL:

$ mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

Ou imprima assim para o MariaDB:

mysql  Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1

Anote qual banco de dados e qual versão você está executando, como você os usará mais tarde. Em seguida, você precisa interromper o banco de dados para acessá-lo manualmente.

Etapa 2: Parando o servidor de banco de dados

Para alterar a senha root, você deve desligar o servidor de banco de dados antecipadamente.

Você pode fazer isso no MySQL com:

$ sudo systemctl stop mysql

E para MariaDB com:

$ sudo systemctl stop mariadb

Etapa 3: Reiniciando o servidor de banco de dados sem verificação de permissão

Se você executar o MySQL e o MariaDB sem carregar informações sobre os privilégios do usuário, ele permitirá que você acesse a linha de comando do banco de dados com privilégios de root, sem fornecer uma senha. Isso permitirá que você obtenha acesso ao banco de dados sem saber.

Para fazer isso, é necessário parar o banco de dados de carregar as tabelas de concessão, que armazenam informações sobre privilégios do usuário. Como esse é um risco à segurança, você também deve pular a rede também para impedir que outros clientes se conectem.

Inicie o banco de dados sem carregar as tabelas de concessão ou ativar a rede:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Oe comercial no final deste comando fará com que esse processo seja executado em segundo plano, para que você possa continuar usando o seu terminal.

Agora você pode conectar-se ao banco de dados como usuário root, o que não deve solicitar uma senha.

$ mysql -u root

Você verá imediatamente um prompt de shell do banco de dados.

Prompt do MySQL

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Prompt do MariaDB

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Agora que você tem acesso root, pode alterar a senha root.

Etapa 4: Alterando a senha root

mysql> FLUSH PRIVILEGES;

Agora podemos alterar a senha do root.

Para o MySQL 5.7.6 e mais recente , bem como o MariaDB 10.1.20 e mais recente , use o seguinte comando:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

Para o MySQL 5.7.5 e mais antigo , bem como o MariaDB 10.1.20 e mais antigo , use:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

Certifique-se de substituir new_password por sua nova senha de escolha.

Nota: Se o comando ALTER USER não funcionar, geralmente é indicativo de um problema maior. No entanto, você pode tentar UPDATE ... SET para redefinir a senha root.

[IMPORTANTE] Esta é a linha específica que corrigiu meu problema específico:

mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';

Lembre-se de recarregar as tabelas de concessão depois disso.

Em qualquer um dos casos, você deverá ver a confirmação de que o comando foi executado com sucesso.

Query OK, 0 rows affected (0.00 sec)

A senha foi alterada; portanto, agora você pode parar a instância manual do servidor de banco de dados e reiniciá-la como antes.

Etapa 5: reiniciar o servidor de banco de dados normalmente

O tutorial segue algumas etapas adicionais para reiniciar o banco de dados, mas a única peça que usei foi esta:

Para o MySQL, use: $ sudo systemctl start mysql

Para MariaDB, use:

$ sudo systemctl start mariadb

Agora você pode confirmar que a nova senha foi aplicada corretamente executando:

$ mysql -u root -p

O comando agora deve solicitar a senha recém-atribuída. Digite-o e você deverá obter acesso ao prompt do banco de dados conforme o esperado.

Conclusão

Agora você tem acesso administrativo ao servidor MySQL ou MariaDB restaurado. Verifique se a nova senha root que você escolhe é forte e segura e mantenha-a em local seguro.


No meu caso no Debian 10, o erro

sudo mysql -u root -p mysql

foi resolvido por (BOA MANEIRA)

mysql -u root -p mysql

MANEIRA RUIM:

 mysql -u root -p mysql 

No seu ambiente de trabalho MySQL, você pode ir para a barra lateral esquerda, em Gerenciamento, selecionar "Usuários e privilégios", clicar na raiz em Contas de usuário, na seção à direita, clicar na guia "Limites de conta" para aumentar o máximo de consultas, atualizações, etc. depois clique na guia "Funções administrativas" e marque as caixas para conceder acesso à conta. Espero que ajude!


Se você é como eu e todas as sugestões acima falharam, prossiga com a desinstalação de todas as versões do mysql em sua máquina, procure todos os arquivos mysql restantes usando este comando sudo find / -name "mysql" e rm -rf cada arquivo ou diretório com o comando nome mysql anexado a ele (você deve pular arquivos relacionados às bibliotecas da linguagem de programação). Agora instale uma nova versão do MySQL e aproveite. Nota: você perderá todos os seus dados, portanto pese suas opções primeiro.


Todas as soluções que encontrei eram muito mais complexas do que o necessário e nenhuma funcionou para mim. Aqui está a solução que resolveu meu problema. Não há necessidade de reiniciar o mysqld ou iniciá-lo com privilégios especiais.

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

Com uma única consulta, estamos alterando o auth_plugin para mysql_native_password e configurando a senha root como root ( fique à vontade para alterá-la na consulta)

Agora você deve conseguir fazer login com root. Mais informações podem ser encontradas na documentação do mysql

(saia do console mysql com Ctrl + D ou digitando exit )





database-connection