Если при попытке входа в phpMyAdmin вы видите ошибку:
#1698 - Access denied for user 'root'@'localhost'
то данная статья поможет вам разобраться в проблеме и устранить её.
MySQL 5.7 изменила модель безопасности: теперь вход в MySQL под рутом (root) требует sudo (при этом пароль всё равно может быть пустым). Т.е. phpMyAdmin невозможно использовать под пользователем рутом. Подробное объяснение смотрите в статье Аутентификация по паролю и unix_socket в MySQL и MariaDB.
Самым простым (и самым безопасным) решением будет создать нового пользователя и предоставить ему требуемые привилегии.
Но начнём мы с другого решения:
Разрешить пользователю root подключаться к MySQL и MariaDB без sudo
Для получения доступа к базе данных MySQL/MariaDB обычному пользователю без использования sudo привилегий, зайдите в приглашение командной строки MySQL
sudo mysql
и запустите следующие команды:
Переключиться на аутентификацию по паролю можно следующим SQL запросом:
use mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'ПАРОЛЬ'; exit
Обратите внимание, что вам нужно ввести ПАРОЛЬ.
Затем попробуйте войти в базу данных без sudo, как показано ниже.
mysql -u root -p
==================Устаревший метод==================
Это устаревший метод, он не работает в новых версиях MariaDB, но может по-прежнему работать в MySQL.
Для получения доступа к базе данных MySQL/MariaDB обычному пользователю без использования sudo привилегий, зайдите в приглашение командной строки MySQL
sudo mysql
и запустите следующие команды:
use mysql; update user set plugin='' where User='root'; flush privileges; exit
Затем перезапустите службу MySQL и попробуйте войти в базу данных без sudo, как показано ниже.
sudo systemctl restart mysql.service mysql -u root -p
==================Конец устаревшего метода==================
Создание нового пользователя для работы с MySQL через phpMyAdmin
1. Подключитесь к mysql
sudo mysql --user=root mysql
2. Создайте пользователя для phpMyAdmin
Запустите следующие команды (замените some_pass на желаемый пароль):
CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Если ваш phpMyAdmin подключается к localhost, то этого должно быть достаточно.
3. Опционально: разрешение удалённых соединений
Помните: разрешение удалённому пользователю иметь все привилегии – это вопрос безопасности, имейте это ввиду, выполняя последующие шаги. Если вы хотите, чтобы этот пользователь имел те же привилегии во время удалённых подключений, дополнительно выполните (замените some_pass на пароль, используемый на Шаге #2):
CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
4. Обновите phpMyAdmin
Используя sudo, отредактируйте файл /etc/dbconfig-common/phpmyadmin.conf обновив значения пользователь/пароль в следующих секциях (замените some_pass на пароль, используемый на шаге #2):
# dbc_dbuser: database user # the name of the user who we will use to connect to the database. dbc_dbuser='phpmyadmin' # dbc_dbpass: database user password # the password to use with the above username when connecting # to a database, if one is required dbc_dbpass='some_pass'
Связанные статьи:
- Аутентификация по паролю и unix_socket в MySQL и MariaDB. Исправление ошибки #1698 - Access denied for user ‘root’@’localhost’ (100%)
- Ошибка «ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2 "No such file or directory")» (РЕШЕНО) (54.8%)
- Ошибка «mysqli_connect(): (HY000/1045): Access denied for user 'username'@'localhost'» (РЕШЕНО) (54.8%)
- Ошибка «Failed - Network error» во время экспорта в phpMyAdmin (РЕШЕНО) (54.8%)
- Как установить веб-сервер Apache с PHP 7, MariaDB/MySQL и phpMyAdmin (LAMP) на Ubuntu (54.1%)
- Ошибка «E: Release file for http://http.kali.org/kali/dists/kali-rolling/InRelease is not valid yet (invalid for another 2h 43min 57s). Updates for this repository will not be applied» (РЕШЕНО) (RANDOM - 0.7%)
Пипец, почти всю ночь промучился с этим вопросом и чего только не перепробовал, а в итоге… Как вы говорите:
Нет, вы "врубитесь" еще раз:
Потратил столько времени и сил, а Вы описали суть проблемы всего несколькими словами!..
Создал нового пользователя 'phpMyAdmin' и всё заработало.
Огромное СПАСИБО за помощь!
P.S. Ранее таких трудностей не было - при установке MySQL он просил указать пароль для root после чего всё работало без проблем. В этот же раз при установке пароль для root не спрашивало и после под root пускало только с sudo (phpMyAdmin таким образом не мог авторизоваться). Не зная о изменении модели безопасности я и попал в тупик 🙁
и запустите следующие команды:
Затем перезапустите службу MySQL и попробуйте войти в базу данных без sudo, как показано ниже.
После этих манипуляций совсем зайти не могу
Аналогичная проблема, помогло это
Братик, дай расцулую в дёсна!
Я после тебя !
Мда. Теперь тупо не пускает, на все комманды: mysql, mysql -u root -p, Enter password: Ответ один: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Такая ошибка возникает при неправильном имени пользователя или пароле. Если вы вводили команды из статьи или из комментариев, в некоторых из них вместо заполнителя нужно ввести свой новый пароль. Видимо, вы этого не сделали.
Возможно вам поможет статья «Как сбросить пароль root для MySQL или MariaDB».
Спасибо, очень помогло!
Спасибо автор, у тебя отличный сайт! В закладки!
Привет, где запускать эти команды?
Приветствую! Эта инструкция для Linux. На Windows у меня такой проблемы нет, устанавливал по этой инструкции: https://hackware.ru/?p=21
Но у меня такое ощущение, что вы просто неверно вводите пароль. Если сделаете скриншот или хотя бы скопируете полный текст сообщения, то можно будет сказать точнее.
вот скриншот раньше вводил все было нормально, а после переустановки вот такая ошыбка.
Здесь решение для ошибки 1698, а у вас ошибка 1045. При установке (обновлении) у вас должен был запроситься пароль для root.
Если это какая-то сборка, то спросите на официальном сайте.
Если это официальная MySQL/MariaDB то можно просто сбросить пароль root. Но для этого вам нужно найти файл mysqld.exe — он в той папке, где установлена MySQL.
Если найдёте этот файл, то откройте командную строку, для этого нажмите Win+r и введите cmd и нажмите Enter. В открывшееся окно перетащите этот файл, добавьте опцию --version и нажмите Enter:
Должно вывестись что-то вроде такого:
Если всё получится, то напишите сюда, скажу что делать дальше.
вот что у меня получилось
ой, вот лучше
Для начала попробуйте следующие учётные данные:
Если не поможет, видимо авторы Open Server говорят пароль входа только тем, кто сделал донат ))))))))
В общем если не поможет, то перейдите к статье «Как сбросить пароль root MySQL или MariaDB в Windows» которую я специально написал по вашему вопросу, там всё подробно и пошагово описано как сбросить забытый пароль MySQL и MariaDB.
спасибо огромное помогло ввести пароль рут)
Ребята, выручайте. Всё перепробовал.
После нескольких попыток восстановить пароль(который был по умолчанию без пароля, то есть не пускало без пароля) перестало заходить и через sudo mysql. Я удалил полностью по мануалу. Далее начал устанавливать и теперь заходит через sudo mysql.
Server version: 8.0.27-0ubuntu0.20.04.1 (Ubuntu)
Как было указано в мануале установил MEDIUM пароль: '12345678'
И всё-равно при входе ошибка 1698:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
То есть если при установке не ставишь пароль, он говорит пароль неверный. Если ставишь пароль, то всё-равно пароль неверный. Что я делаю не так?
Вы устанавливали пароль root’а с помощью mysql_secure_installation? Единственная идея, что вы как-то неправильно установили пароль.
Вы можете сбросить пароль root для MySQL и установить его заново.
Да, устанавливал. Без установки пароля всё-равно просит его ввести. После первой установки я не трогал пароль, то есть его не должно было быть. По идее оставляешь поле пустым, жмёшь enter и должно войти, но там была эта же ошибка 1698. Так я нашёл эту статью. Пробовал варианты восстановления пароля отсюда, на каком то из этапов словил ошибку. После чего перестало полностью пускать даже через sudo, удалил полностью, переустановил с паролем и всё-равно не работает. Какой пароль нужно установить, чтобы он работал? Спасибо.
Проблема решена. Для тупых как я нужен манул "Как правильно придумать пароль, чтобы система его приняла".
Я написал 8 строчных букв, одну заглавную, одну цифру и один спец символ(например: qwertyuiQ1!). Пароль принят и теперь заходит в учётку. Думаю у большинства новичков такая же ошибка. 3 дня потратил на это, ужас!
То есть получается, что корень проблемы в том, что пароль не соответствовал критериям безопасности? Значит на этапе установки пароля программа сообщала об этом — скорее всего, вы просто не обратили внимание на это сообщение.
Кстати, требования к паролю можно изменить, об этом написано тут.
Корень проблемы в том, что по умолчанию пароль должен был отсутствовать, но в систему не пускало без пароля. На этапе установки программа в принципе не спрашивает про пароль. Скорее всего первым делом нужно включить поддержку паролей(как описано в одном из ваших мануалов, а может и зарубежных, их тоже курил). Почему то у меня по умолчанию эта функция была не активна. После включения функции даёт создать учётку и передать права.
Второй проблемой стало то, что при установке некорректного пароля(до включения поддержки паролей) система не ругается как будто всё хорошо и пароль принят. При попытке зайти по установленному вручную паролю выдаёт ошибку как в самом начале.(В этом моменте каждый начинает паниковать и перебирать все способы пока не сломает всё окончательно :))
После включения поддержки паролей при попытке установить некорректный пароль получаем, наконец-то, ошибку несоответствия и там уже проще разобраться. Вбиваем ошибку в поиск и находим требования к созданию пароля. По умолчанию поддержка паролей отключена, но не пускает. Бред короче 🙂
Итог: заходим через комманду sudo mysql, включаем поддержку паролей validate_password (
select
plugin_name, plugin_status
from
information_schema.plugins
where
plugin_name
like
'validate%'
;
install plugin validate_password soname
'validate_password.so'
;
)
, создаём новую учётку с логином вместо root (например: 'admin') с корректным паролем(например: 'qwertyuiQ!1') и передаём ей все права (
CREATE
USER
'admin'
@
'%'
IDENTIFIED
BY
'
qwertyuiQ!1';
GRANT
ALL
PRIVILEGES
ON
*.*
TO
'admin'
@
'%'
WITH
GRANT
OPTION
;
FLUSH
PRIVILEGES
;
).
Далее уже входим в новую учётку( через команду: mysql -u admin -p). Скорее всего такая последовательность.
P.S: Раньше видимо поддержка пароля работала со старта и пускала в систему либо без пароля, либо с паролями навроде root или user, либо выдавала корректную ошибку. По факту выдаваемая ошибка не ведёт к решению проблемы, а только запутывает. Если бы ошибка просила включить поддержку паролей, то проблемы авторизации в принципе бы не существовало.