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

У меня установлен MySQL на моем сервере Linux, я забыл его пароль, поэтому я пошел и изменил его, используя методы, которые я нашел в Интернете. Я сделал следующее:

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql --user root mysql
SELECT * FROM user; // I checked if I could access the user table or not
update user SET password = PASSWORD('new_pass') WHERE user = 'root';
flush privileges;
exit

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

Затем я перезапустил MySQL

/etc/init.d/mysql stop
/etc/init.d/mysql start

Теперь, когда я вошел в систему с новым паролем

mysql -u root -p new_pass

это все еще дает мне ошибки "ОШИБКА 1045 (28000): доступ запрещен для пользователя 'root'@'localhost' (используя пароль: Да)"

Есть что-то, чего мне не хватает?

10 ответов

Решение

На самом деле я более внимательно посмотрел на пользовательскую таблицу в базе данных mysql, оказалось, что кто-то до меня редактировал поле ssl_type для пользователя root в SSL.

Я отредактировал это поле и перезапустил mysql, и это сработало как шарм.

Благодарю.

Я смог решить эту проблему, выполнив это заявление

sudo dpkg-reconfigure mysql-server-5.5

Который изменит пароль root.

Вы можете восстановить пароль сервера базы данных MySQL, выполнив пять простых шагов. Вот команды, которые нужно вводить для каждого шага (войдите в систему как пользователь root):

Шаг № 1: Остановить службу MySQL

/etc/init.d/mysql stop

Выход:

Stopping MySQL database server: mysqld.

Шаг № 2: Запустите сервер MySQL без пароля:

mysqld_safe --skip-grant-tables &

Выход:

[1] 5988

Starting mysqld daemon with databases from /var/lib/mysql

mysqld_safe[6025]: started

Шаг № 3: Подключитесь к серверу MySQL с помощью клиента MySQL:

mysql -u root

Выход:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Шаг № 4: Установите новый пароль пользователя root MySQL

mysql> use mysql;

mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';

mysql> flush privileges;

mysql> quit

Шаг № 5: остановите MySQL Server:

/etc/init.d/mysql stop

Выход:

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

Шаг № 6: Запустите сервер MySQL и протестируйте его

/etc/init.d/mysql start

mysql -u root -p

Вы должны сбросить пароль! шаги для Mac OSX (проверено и работает) и Ubuntu

Стоп MySQL

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

Запустите его в безопасном режиме:

$ sudo mysqld_safe --skip-grant-tables

(над строкой целая команда)

Это будет текущая команда до завершения процесса, поэтому откройте другое окно оболочки / терминала и войдите без пароля:

$ mysql -u root

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

Запустите MySQL

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

Ваш новый пароль - "пароль".

У меня такая же проблема. Вы должны написать mysql -u root -p

НЕ mysql или же mysql -u root -p root_password

На Mac OS, пожалуйста, выполните следующие действия:

Стоп MySQL

$ sudo /usr/local/mysql/support-files/mysql.server stop Запустите его в безопасном режиме:

$ sudo mysqld_safe --skip-grant-tables (над строкой находится вся команда)

Это будет текущая команда до завершения процесса, поэтому откройте другое окно оболочки / терминала и войдите без пароля:

$ mysql -u root

mysql> ОБНОВЛЕНИЕ mysql.user SET Password=PASSWORD('password') WHERE User='root'; Запустите MySQL

sudo /usr/local/mysql/support-files/mysql.server запустите новый пароль "пароль".

Я сталкиваюсь с той же проблемой, @ progrAmmar просветил меня, "присмотрелась к пользовательской таблице в базе данных mysql".

Моя проблема не в ssl_type, а в первом поле:Host. Я изменил значение с помощью

update user set Host='localhost' where User='root' and Host='%';

в mysqld_safe --skip-grant-tables модель.

Тогда это работает хорошо.

Вам может понадобиться очистить plugin колонка для вашей учетной записи root. На моей новой установке все учетные записи root имели unix_socket установить в plugin колонка. Это приводило к блокировке учетной записи root sql только для учетной записи root unix, поскольку только системный root мог входить через сокет.

если ты update user set plugin='' where User='root';flush privileges;Теперь вы сможете войти в корневую учетную запись с любой учетной записи localhost unix (с паролем).

Смотрите этот вопрос AskUbuntu и ответ для более подробной информации.

В моем случае:

  1. /etc/init.d/mysql stop
  2. mysqld_safe --skip-grant-tables &

(в новом окне)

  1. mysql -u root
  2. mysql> use mysql;
  3. mysql> update user set authentication_string = пароль ('пароль'), где user = 'root';
  4. mysql> сброс привилегий;
  5. mysql> выход
  6. /etc/init.d/mysql restart

Может быть, текущий пользователь не root, попробуйте sudo mysql -uroot -p, я только что добился успеха.

Вы можете попробовать это решение:-

Чтобы mysql запрашивал у вас пароль, вам также нужно указать опцию -p: (попробуйте пробел между -p и паролем)

mysql -u root -p new_password

Доступ к MySQLl запрещен

Во второй ссылке кто-то прокомментировал ту же проблему.

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