MySQL - acesso negado para o usuário root @ localhost

2

Eu estava tentando dar acesso remoto ao MySQL, já que o MySQL estava trabalhando apenas localmente.

Eu segui este guia link

Eu usei o comando assim do tutorial:

mysql> update user set Host='202.54.10.20' where user='root';

Acho que isso atrapalhou o mysql local.

Agora não consigo fazer login com:

$ mysql -u root -p

eu recebo este erro:

  

Acesso negado para o usuário 'root' @ 'localhost' (usando a senha: Yes)

Agora sei que a senha está certa, como costumava funcionar antes. mas eu acidentalmente me tranquei ...

Eu não sei mais o que fazer.

O sistema operacional usado pelo servidor é o Ubuntu.

    
por Sizzling Code 31.08.2016 / 08:04

3 respostas

3

Você pode tentar o procedimento de recuperação regular:

  1. Parar o serviço do MySQL
  2. Execute o serviço usando:

    sudo mysqld_safe --skip-grant-tables &
    
  3. Conectar (a senha não será necessária):

    mysql -uroot
    
  4. Reverta suas alterações (tenha cuidado desta vez e verifique com select qual é o estado atual, o host deve ser 202.54.10.20 ):

    use mysql;
    update user set Host='localhost' where user='root';
    flush privileges;
    
  5. Reinicie o MySQL da maneira normal

por techraf 31.08.2016 / 09:39
0

Experimente este comando:

SHOW GRANTS FOR 'root'@'localhost';

Isso também pode acontecer se você não tiver privilégios adequados. então você pode até digitar o seguinte comando:

GRANT ALL PRIVILEGES ON '%'.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;
    
por Avani badheka 31.08.2016 / 10:04
0

Eu tive o mesmo problema (atualizei incorretamente o host do usuário do virtualmin) e corrigi-lo com etapas semelhantes à resposta do @techraf, mas seguindo etapas semelhantes deste site para evitar o erro can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' no ubuntu 16.04:

link

Eu modifiquei as etapas para atualizar o host em vez da senha:

# Stop MySQL
sudo service mysql stop
# Make MySQL service directory.
sudo mkdir /var/run/mysqld
# Give MySQL user permission to write to the service directory.
sudo chown mysql: /var/run/mysqld
# Start MySQL manually, without permission checks or networking.
sudo mysqld_safe --skip-grant-tables --skip-networking &
# Log in without a password.
mysql -uroot mysql

então no mysql:

select user, host from mysql.user; --just to check
UPDATE mysql.user SET host='localhost' WHERE User='root' AND Host='202.54.10.20'; --CHANGE the host to the one you see in the query
select user, host from mysql.user; --check again 
commit;
exit;

E depois no console:

# Turn off MySQL.
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
# Start the MySQL service normally.
sudo service mysql start
    
por Frank Orellana 30.11.2017 / 02:46