ti-enxame.com

ERRO 1045 (28000): Acesso negado para o usuário 'root' @ 'localhost' (usando a senha: YES)

Eu sou uma engenheira elétrica que brinca principalmente com o sistema de energia em vez de programar. Recentemente, tenho acompanhado um manual para instalar um pacote de software no Ubuntu. Eu não tenho nenhum conhecimento sobre mySQL, na verdade. Eu fiz as seguintes instalações no meu Ubuntu.

Sudo apt-get update
Sudo apt-get install mysql-server-5.5
Sudo apt-get install mysql-client-5.5
Sudo apt-get install mysql-common
Sudo apt-get install glade
Sudo apt-get install ntp

Então eu faço

[email protected]:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

Acabei com a seguinte mensagem de erro.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Como posso corrigi-lo e continuar?

129
Sibbs Gambling

Nota: Para MySQL 5.7+ por favor veja answer from @Lahiru para esta questão. Isso contém mais informações atuais.

Para o MySQL <5.7:

A senha raiz padrão é em branco (ou seja, string vazia) e não root. Então você pode apenas fazer o login como:

mysql -u root

Você deve obviamente mudar sua senha root após a instalação

mysqladmin -u root password [newpassword]

Na maioria dos casos, você também deve configurar contas de usuário individuais antes de trabalhar extensivamente com o banco de dados.

119
Mike Brant

Consegui resolver este problema executando esta declaração

Sudo dpkg-reconfigure mysql-server-5.5

Qual mudará a senha da raiz.

111
Divz

Você tem que redefinir a senha! passos para mac osx (testado e funcionando) e ubuntu

Pare o MySQL usando

Sudo service mysql stop

ou

$ Sudo /usr/local/mysql/support-files/mysql.server stop

Inicie no modo de segurança:

$ Sudo mysqld_safe --skip-grant-tables --skip-networking

(a linha acima é o comando inteiro)

Este será um comando em andamento até que o processo termine, abra outra janela Shell/terminal, efetue login sem uma senha:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Conforme o comentário da IberoMedia, para versões mais recentes do MySQL, o campo é chamado authentication_string:

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

Inicie o MySQL usando:

Sudo service mysql start

ou

Sudo /usr/local/mysql/support-files/mysql.server start

sua nova senha é 'senha'.

57
tk_

se o problema persistir tente forçar a troca do passe

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

Configure a nova senha do usuário root do MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Pare o servidor MySQL:

/etc/init.d/mysql stop

Inicie o servidor MySQL e teste-o:

mysql -u root -p
28
Yasin Hassanien

Na primeira inicialização do servidor, acontece o seguinte, dado que o diretório de dados do servidor está vazio:

  • O servidor é inicializado.
  • O certificado SSL e os arquivos de chaves são gerados no diretório de dados.
  • O plugin validate_password está instalado e ativado.
  • A conta de superusuário 'root' @ 'localhost' é criada. A senha para o superusuário é definida e armazenada no arquivo de log de erros. 

Para revelá-lo, use o seguinte comando:

Shell> Sudo grep 'temporary password' /var/log/mysqld.log

Altere a senha de root o mais rápido possível fazendo login com a senha temporária gerada e defina uma senha personalizada para a conta de superusuário:

Shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 
19
Lahiru

Eu sei disso uma pergunta antiga, mas eu sinto que isso pode ajudar alguém. Eu fui recentemente confrontado com o mesmo problema, mas no meu caso, lembro-me da minha senha muito bem, mas continuou me dando o mesmo erro. Eu tentei tantas soluções, mas ainda nenhum ajudou, então eu tentei isso 

mysql -u root -p 

depois que ele pede uma passagem Palavra como esta

Enter password: 

e então eu digitei a senha que eu usei. Isso é tudo

16
XY-JOE

Isso acontece quando sua senha está faltando.

Passos para alterar a senha quando você esqueceu:

  1. Pare o servidor MySQL (no Linux):

    Sudo systemctl stop mysql
    
  2. Inicie o banco de dados sem carregar as tabelas de permissões ou ativar a rede:

    Sudo mysqld_safe --skip-grant-tables --skip-networking &
    

    Oe comercial no final desse comando fará com que esse processo seja executado no
    background para que você possa continuar usando seu terminal e rodar #mysql -u root, ele não pedirá senha.

    Se você receber erro como abaixo:

    2018-02-12T08: 57: 39.826071Z mysqld_safe Diretório '/ var/run/mysqld' para UNIX
    arquivo de soquete não existe. mysql -u root ERRO 2002 (HY000): Não é possível conectar-se ao servidor MySQL local por meio do soquete
    '/ var/run/mysqld/mysqld.sock' (2) [1] + Sair 1 

  3. Faça o diretório do serviço MySQL.

    Sudo mkdir /var/run/mysqld
    

    Dê permissão ao usuário do MySQL para gravar no diretório de serviço.

    Sudo chown mysql: /var/run/mysqld
    
  4. Execute o mesmo comando na etapa 2 para executar o mysql em segundo plano.

  5. Execute mysql -u root você irá obter o console mysql sem digitar a senha. 

    Execute estes comandos

    FLUSH PRIVILEGES;
    

    Para o MySQL 5.7.6 e mais recente

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

    Para o MySQL 5.7.5 e mais antigo

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

    Se o comando ALTER USER não funcionar, use:

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

Agora saia

  1. Para parar a instância iniciada manualmente

    Sudo kill `cat /var/run/mysqld/mysqld.pid`
    
  2. Reinicie o mysql

    Sudo systemctl start mysql
    
15
Sameer Choudhary

Estou usando o Ubuntu-16.04: instalado o mysql - 5.7. Eu tive o mesmo problema: Login negado para usuário root.

Tentei os passos abaixo:

  1. dpkg --get-selections | grep mysql (para obter a versão do mysql).

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

Sem -p que não Solicita que você pergunte a senha. Quando estiver, você pode criar um usuário com uma senha seguindo as etapas:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

Saia da raiz e faça o login do que você deu acima.

mysql -u <your_new_username> -p

Por alguma razão ainda apenas digitando mysql não funciona. AT TODOS Sugiro criar o hábito de usar mysql -u <name> -p.

10
Nikhil Rushmith

Eu me deparei com esse problema muito chato e encontrei muitas respostas que não funcionavam. A melhor solução que encontrei foi desinstalar completamente o mysql e reinstalá-lo. Na reinstalação, você definiu uma senha root e isso resolveu o problema.


Sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
Sudo rm -rf /etc/mysql /var/lib/mysql
Sudo apt-get autoremove
Sudo apt-get autoclean

Eu encontrei este código em outro lugar, então eu não tenho nenhum crédito por isso. Mas funciona. Para instalar o mysql depois de desinstalá-lo, acho que o Digital Ocean tem um bom tutorial sobre ele. Checkout my Gist para isso.
https://Gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

6
JamesD

Por favor, leia a documentação oficial: Mysql: Como redefinir a senha do root

Se você tiver acesso ao terminal: 

MySQL 5.7.6 e posterior:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 e anterior:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
5
d.danailov

Estou usando o mysql-5.7.12-osx10.11-x86_64.dmg no Mac OSX

O processo de instalação configura automaticamente uma senha temporária para o usuário root. Você deve salvar a senha. A senha não pode ser recuperada. 

Siga as instruções

  1. Vá para cd /usr/local/mysql/bin/
  2. Digite a senha temporária (que seria algo como "tsO07JF1 => 3")
  3. Você deve obter o mysql> Prompt. 
  4. Run, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}'); Se você deseja definir sua senha: "root" então o comando seria, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. Executar ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. Executar exit
  7. Executar ./mysql -u root -p
  8. Digite sua senha. No meu caso eu digitaria "root" (sem aspas)
  9. Isso é tudo. 

Por conveniência, você deve adicionar "/usr/local/mysql/bin" ao seu PATH

Agora de qualquer lugar você pode digitar ./mysql -u root -p e então digitar a senha e você irá obter o mysql> Prompt. 

Espero que ajude. 

3
tausiq

A resposta pode parecer boba, mas depois de perder horas de tempo, é assim que eu consegui trabalhar

mysql -u root -p

Recebi a mensagem de erro

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Mesmo que eu estivesse digitando a senha correta (a senha temporária que você obtém quando instala o mysql pela primeira vez)

Eu acertei quando eu digitei a senha quando a senha estava piscando

3
Amit Kumar

se o problema persistir tente forçar a troca do passe

Pare o servidor MySQL (no Linux):

/etc/init.d/mysql stop

Pare o servidor MySQL (no Mac OS X):

mysql.server stop

Inicie o daemon mysqld_safe com --skip-grant-tables

mysqld_safe --skip-grant-tables &
mysql -u root

Configure a nova senha do usuário root do MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Pare o servidor MySQL (no Linux):

/etc/init.d/mysql stop

Pare o servidor MySQL (no Mac OS X):

mysql.server stop

Inicie o serviço do servidor MySQL e teste para efetuar login pela raiz:

mysql -u root -p
2
Max Yao

Apenas uma linha e resolveu o meu problema.

Sudo dpkg-reconfigure mysql-server-5.5
1
Satyendra Sahani

No Ubuntu 16.04 (MySQL versão 5.7.13) consegui resolver o problema com os passos abaixo:

  1. Siga as instruções da seção B.5.3.2.2 Redefinindo a senha do root: Sistemas Unix e semelhantes a Unix Manual de referência do MySQL 5.7

  2. Quando eu tentei #Sudo mysqld_safe --init-file =/home/me/mysql-init & ele falhou. O erro estava em /var/log/mysql/error.log

    2016-08-10T11: 41: 20.421946Z 0 [Nota] Execução do init_file '/ home/me/mysql/mysql-init' iniciado. 2016-08-10T11: 41: 20.422070Z 0 [ERRO]/usr/sbin/mysqld: Arquivo '/ home/me/mysql/mysql-init' não encontrado (Errcode: 13 - Permissão negada) 2016-08-10T11: 41: 20.422096Z 0 [ERROR] Abortando

A permissão de arquivo do mysql-init não foi o problema, precisa editar a permissão do apparmor

  1. Editar por #Sudo vi /etc/apparmor.d/usr.sbin.mysqld 

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
    
  2. Do #Sudo /etc/init.d/apparmor reload

  3. Inicie o mysqld_safe novamente, tente o passo 2 acima. Verifique /var/log/mysql/error.log para ter certeza de que não há erro e o mysqld foi iniciado com sucesso

  4. Execute #mysql -u root -p

    Digite a senha:

Digite a senha que você especificou no mysql-init. Você deve logar como root agora.

  1. Desligamento mysqld_safe por #Sudo mysqladmin -u root -p shutdown

  2. Inicie o mysqld normal por #Sudo systemctl start mysql

1
codegen

Isso vai funcionar se você está digitando os comandos que estão sendo mencionados nas outras respostas, mas ainda assim recebe esses erros:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  Sudo mysqld_safe --skip-grant-tables

Siga os comandos abaixo passo a passo até você redefinir sua senha:

# Stop Your Server First
Sudo service mysql stop

# Make MySQL service directory.
Sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
Sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
Sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -uroot mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its Host

FLUSH PRIVILEGES;
EXIT;

#Now you can use your new password to login to your Server
mysql -uroot -p
1
Mehdi

Se você ainda não definiu a senha, execute mysql -uroot, isso funciona para mim.

0
ahbon

Eu tive uma questão semelhante:

ERRO 1045 (28000): Acesso negado para o usuário 'root' @ 'localhost' (usando a senha: NO)

Mas no meu caso, a causa foi realmente boba. Copiei o comando de um documento do Word e o problema era que um hífen não possuía o código ASCII 2D, mas o Unicode E28093.

Caminho errado:

mysql -u root –pxxxx

Caminho certo:

mysql -u root -pxxxx

Ambos parecem iguais, mas não são iguais (experimente, copie e cole, substituindo sua senha).

Confrontado com este tipo de erro, a recomendação é tentar digitar o comando em vez de copiar e colar.

0
cesargastonec

No Mac, se você tiver um problema em fazer o login com a primeira senha que lhe foi dada na instalação, talvez você possa simplesmente matar o processo mysql e depois tentar. 

Então: 1- execute o seguinte comando para encontrar o PID do mysql:

ps -aef | grep mysql | grep -v grep

2- mate o processo:

kill -15 [process id] 

Então você pode logar com a senha inicial usando este comando:

mysql -uroot -p

Que pedem para você digitar sua senha. Basta digitar a senha inicial.

0
Maryam Zakani

Por padrão, a senha será nula, portanto, você deve alterar a senha seguindo as etapas abaixo.

conectar-se ao mysql

root # mysql

Use o mysql

mysql> update user set senha = PASSWORD ('root') onde User = 'root'; Finalmente, recarregue os privilégios:

mysql> flush privilégios; mysql> quit

0
Rizwan Basheer

Eu tentei com a resposta correta por @Lahiru, mas não funcionou com o servidor MySQL versão 8.0.16 (Comunidade) no macOS Mojave.

Segui as instruções de Sameer Choudhary acima e com alguns ajustes, consegui alterar a senha do root e ativar o acesso root do host local.

Update: Todos estes não são necessários, se você estiver instalando no Mac OS usando homebrew: "brew install mysql"

0
cspider

Nas versões recentes do MySQL, não há password na tabela mysql.user.

Então você precisa executar ALTER USER. Coloque este comando de uma linha no arquivo. 

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

E executá-lo como arquivo init (como usuário root ou mysql)

mysqld_safe --init-file=/home/me/mysql-init &

O servidor MySQL precisa ser parado para iniciar o mysqld_safe

Além disso, pode haver um problema com as permissões apparmor para carregar esse arquivo init. Leia mais aqui https://blogs.Oracle.com/jsmyth/entry/apparmor_and_mysql

0
Vladimir Kovalchuk