MySQL - доступ запрещен для пользователя root@localhost

Я пытался предоставить удаленный доступ к MySQL, поскольку MySQL только работал локально.

Я следовал этому руководству http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html

Я использовал команду как это из учебного руководства:

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

Я думаю, что это испортило локальный mysql.

Теперь я не могу войти в систему с:

$ mysql -u root -p

я получаю эту ошибку:

Доступ запрещен для пользователя 'базируется' 'localhost' (использование пароля: Да)

Теперь я знаю, что пароль является правильным, поскольку он раньше работал прежде. но я случайно заблокировал меня..

Я не знаю, что больше делать.

OS, используемой сервером, является Ubuntu.

2
задан 17 September 2016 в 14:07

4 ответа

Можно попробовать обычную процедуру восстановления:

  1. сервис MySQL Stop
  2. Выполнение сервисное использование:

    sudo mysqld_safe --skip-grant-tables &
    
  3. Подключение (пароль не будет требоваться):

    mysql -uroot
    
  4. Возвращаются Ваши изменения (быть осторожным на этот раз и свериться select, что является текущим состоянием, хост должен быть 202.54.10.20):

    use mysql;
    update user set Host='localhost' where user='root';
    flush privileges;
    
  5. MySQL Restart регулярный путь

3
ответ дан 2 December 2019 в 02:50

Попробуйте эту команду:

SHOW GRANTS FOR 'root'@'localhost';

Это может также произойти, если у Вас нет надлежащих полномочий. таким образом, можно даже ввести следующую команду:

GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;
0
ответ дан 2 December 2019 в 02:50

Я имел ту же проблему (обновленный неправильно пользовательский хост от virtualmin) и зафиксировал его с шагами так же к ответу от @techraf, но выполнения подобных шагов этого сайта для предотвращения can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' ошибка в человечности 16.04:

https://coderwall.com/p/j9btlg/reset-the-mysql-5-7-root-password-in-ubuntu-16-04-lts

Я изменил шаги для обновления хоста вместо пароля:

# 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

затем в 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;

И затем в консоли:

# Turn off MySQL.
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
# Start the MySQL service normally.
sudo service mysql start
0
ответ дан 2 December 2019 в 02:50

Если вы получаете эту ошибку в Workbench, выполните следующие действия.

Сначала просто войдите под своим текущим паролем:

sudo mysql -u root -p

Затем измените свой пароль, потому что ненадежный пароль иногда вызывает ошибку.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';

FLUSH PRIVILEGES;

Затем просто выйдите и снова войдите под своим новым паролем:

quit

sudo mysql -u root -p

После успешного входа в систему введите команду:

use mysql;

Должно появиться сообщение типа «База данных изменена», затем введите:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

После этого введите:

UPDATE mysql.user set authentication_string=PASSWORD('new-strong-password') where user='root';

Затем введите:

FLUSH PRIVILEGES;

Затем просто выйдите:

quit

Теперь попробуйте войти с новым паролем в WORKBENCH. Надеюсь, это сработает. Спасибо.

0
ответ дан 17 April 2020 в 17:28

Другие вопросы по тегам:

Похожие вопросы: