Доступ запрещен для пользователя '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 и ответ для более подробной информации.
В моем случае:
- /etc/init.d/mysql stop
- mysqld_safe --skip-grant-tables &
(в новом окне)
- mysql -u root
- mysql> use mysql;
- mysql> update user set authentication_string = пароль ('пароль'), где user = 'root';
- mysql> сброс привилегий;
- mysql> выход
- /etc/init.d/mysql restart
Может быть, текущий пользователь не root, попробуйте sudo mysql -uroot -p, я только что добился успеха.
Вы можете попробовать это решение:-
Чтобы mysql запрашивал у вас пароль, вам также нужно указать опцию -p: (попробуйте пробел между -p и паролем)
mysql -u root -p new_password
Во второй ссылке кто-то прокомментировал ту же проблему.