Задать вопрос

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO): что делать?

Решил, что пора изучать БД, и споткнулся, еще даже не сумев запустить БД.

В видеокурсе показано было следующее:
sudo apt-get install mysql-server
mysql -u root -p

Автор ввел пароль и спокойно зашел. Я получил ошибку, указанную в заголовке.
Начал гуглить и наткнулся примерно на следующие советы:
Совет 1: заходить через mysql -u root, то есть не добавлять -p. Не помогло, ошибка прежняя.
Совет 2: mysqladmin -u root password [newpassword]. То же самое.

Так что же делать?
  • Вопрос задан
  • 127342 просмотра
Подписаться 4 Сложный 9 комментариев
Пригласить эксперта
Ответы на вопрос 4
@lexadef
Это может быть, если пароль не был задан при установке.

Порядок действий для установки/смены пароля root в mysql следующий:

1. Остановить mysql:
sudo service mysql stop

2. Запустить сервис со следующими параметрами:
sudo mysqld --skip-grant-tables --user=root

Если выдал ошибку то в файле /etc/mysql/mysql.conf.d/mysqld.cnf в секцию [mysqld] добавить строчкуskip-grant-tables и выполнить sudo service mysql restart

3. После этого подключиться к mysql командой:
mysql -u root

4. Обновить пароль root'a:
UPDATE mysql.user SET authentication_string=PASSWORD('<новый пароль>'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';    
FLUSH PRIVILEGES;


5. И перезапустить сервис:
sudo service mysql restart
Если на шаге 2 вы добавляли skip-grant-tables в /etc/mysql/mysql.conf.d/mysqld.cnf - удалить эту строчку.


Подробнее в Русскоязычной документации Ubuntu
Ответ написан
@BorisKorobkov Куратор тега MySQL
Web developer
Пароль по умолчанию пустой.
Возможно, вы неправильно набрали команду. Скопируйте именно эту: mysql -u root -p. На запрос пароля надо просто нажать Enter.

Попробуйте запустить mysql_secure_installation.

Если все равно не пускает - поищите пароль в логе: sudo grep 'temporary password' /var/log/mysqld.log.

Если и этот вариант не подошел - возможно, устанавливаете из какого-то левого репозитория. Удалите sudo apt-get purge mysql*, выключите левые репозитории и установите заново sudo apt-get install mysql-server.
Ответ написан
@petrplot
У меня возникла такая же ошибка, но причина была в том, что в строке mysql -u root -p <пароль> я сразу добавлял пароль в конце строки после символа -p и нажимал войти после этого появлялась строка введите пароль, когда вводишь не видно символов, поэтому я сначала думал что неправильно ввожу, но нет, все было правильно, ошибка как раз была в том что после символа -p нельзя писать пароль, нужно сразу нажимать ввод, а потом в предложенной строке добавить пароль. Самое интересное что я не смог перезаписать пароль как написано в комментах к этому вопросу, не помогло изменение кофига, просто выдавал ошибку, и уже методом тыка понял в чем проблема. Надеюсь кому нибудь будет полезно.
Ответ написан
@somero
Простите, а для Windows-пользователя какая последовательность действий?
Ведь слово «sudo», если я правильно помню, используется в *nix-среде (для исполнения непосредственно следующей за этим словом команды к контексте SuperUser'а), да?
А в Винде, если я сижу под Пользователем из группы Локальных Админов - что надо делать?
Я попробовал предположить производимые командами действия и выполнить аналогичные:

1. Остановить mysql:
sudo service mysql stop

В Windows(10) Я ОСТАНОВИЛ СЛУЖБУ MySQL80

2. Запустить сервис со следующими параметрами:
sudo mysqld --skip-grant-tables --user=root

НУ, Я ПРОСТО В КОММАНДНОЙ СТРОКЕ
(находясь "C:\Program Files\MySQL\MySQL Server 8.0\bin\")
ВЫПОЛНИЛ КОМАНДУ
mysqld --skip-grant-tables --user=root
ОНА БЫЛА ВЫПОЛНЕНА "МОЛЧА", никакой ошибки не выдало, поэтому следующее я пропускаю

«Если выдал ошибку то в файле /etc/mysql/mysql.conf.d/mysqld.cnf в секцию [mysqld] добавить строчкуskip-grant-tables и выполнить sudo service mysql restart»

3. После этого подключиться к mysql командой:
mysql -u root

УДИВЛЯЯСЬ ОПИСАНИЮ, Я КОНЕЧНО ВЫПОЛНИЛ ЭТУ КОМАНДУ. РЕЗУЛЬТАТ БЫЛ ОЖИДАЕМЫЙ.
УДИВЛЯЯСЬ потому, что.. мы же вроде недавно остановили сервис (и он сейчас в службах остановлен).
И Ожидаемый Результат:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
соответственно следующие действия теряют смысл.
Поэтому я запускаю службу опять и снова даю команду
mysql -u root
И получаю то же, что и раньше:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

....///////

А может вы мне даже скажете, что можно всё как-то проще сделать?.
Мне вообще всего-то надо из .sql-файла экспортнуть пару таблиц в Эксель.
Но в мастере импорта данных в Экселе потребовалось указывать имя сервера, имя БД..
И я так понял, что должен быть установлен сервер (хотя бы локально - и можно будет указать localhost), и к нему как-то должна быть приаттачен этот мой файл...

Или всё вообще как-то иначе?
Подскажите, пожалуйста!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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