ZaLinux.ru

Решение проблемы с ошибкой #1698 - Access denied for user ‘root’@’localhost’

Если при попытке входа в phpMyAdmin вы видите ошибку:

#1698 - Access denied for user 'root'@'localhost'

то данная статья поможет вам разобраться в проблеме и устранить её.

MySQL 5.7 изменила модель безопасности: теперь вход в MySQL под рутом (root) требует sudo (при этом пароль всё равно может быть пустым). Т.е. phpMyAdmin невозможно использовать под пользователем рутом.

Самым простым (и самым безопасным) решением будет создать нового пользователя и предоставить ему требуемые привилегии.

Но начнём мы с другого решения:

Разрешить пользователю root подключаться к MySQL без sudo

Для получения доступа к базе данных 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'

Рекомендуемые статьи:

14 Комментарии

  1. SanchO-SEK

    Пипец, почти всю ночь промучился с этим вопросом и чего только не перепробовал, а в итоге… Как вы говорите:

    "MySQL 5.7 изменила модель безопасности: теперь вход в MySQL под рутом (root) требует sudo (при этом пароль всё равно может быть пустым). Т.е. phpMyAdmin невозможно использовать под пользователем рутом."

    Нет, вы "врубитесь" еще раз:

    "MySQL 5.7 изменила модель безопасности: теперь вход в MySQL под рутом (root) требует sudo"

    Потратил столько времени и сил, а Вы описали суть проблемы всего несколькими словами!..

    Создал нового пользователя 'phpMyAdmin' и всё заработало.

    Огромное СПАСИБО за помощь!

    P.S. Ранее таких трудностей не было - при установке MySQL он просил указать пароль для root после чего всё работало без проблем. В этот же раз при установке пароль для root не спрашивало и после под root пускало только с sudo (phpMyAdmin таким образом не мог авторизоваться). Не зная о изменении модели безопасности я и попал в тупик 🙁

  2. Артем
    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

    После этих манипуляций совсем зайти не могу

    1. Aleksey

      Аналогичная проблема, помогло это

      use mysql;
      UPDATE mysql.user SET authentication_string = PASSWORD('12345') WHERE User = 'root' AND Host = 'localhost';
      update user set plugin='mysql_native_password' where User='root';
      flush privileges;
      exit
      
      1. serg

        Братик, дай расцулую в дёсна!

        1. Южный Централ

          Я после  тебя !

  3. Южный Централ

    Спасибо автор, у тебя отличный сайт! В закладки! 

  4. GineTik

    Привет, где запускать эти команды? 

    1. Alexey (Автор записи)

      Приветствую! Эта инструкция для Linux. На Windows у меня такой проблемы нет, устанавливал по этой инструкции: https://hackware.ru/?p=21

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

  5. GineTik

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

    1. Alexey (Автор записи)

      Здесь решение для ошибки 1698, а у вас ошибка 1045. При установке (обновлении) у вас должен был запроситься пароль для root.

      Если это какая-то сборка, то спросите на официальном сайте.

      Если это официальная MySQL/MariaDB то можно просто сбросить пароль root. Но для этого вам нужно найти файл mysqld.exe — он в той папке, где установлена MySQL.

      Если найдёте этот файл, то откройте командную строку, для этого нажмите Win+r и введите cmd и нажмите Enter. В открывшееся окно перетащите этот файл, добавьте опцию --version и нажмите Enter:

      Должно вывестись что-то вроде такого:

      C:\Server\bin\mysql-8.0\bin\mysqld.exe Ver 8.0.19 for Win64 on x86_64 (MySQL Community Server - GPL)

      Если всё получится, то напишите сюда, скажу что делать дальше.

      1. GineTik

        вот что у меня получилось

        1. GineTik

          ой, вот лучше

          1. Alexey (Автор записи)

            Для начала попробуйте следующие учётные данные:

            • Пользователь: root
            • Пароль: root

            Если не поможет, видимо авторы Open Server говорят пароль входа только тем, кто сделал донат ))))))))

            В общем если не поможет, то перейдите к статье «Как сбросить пароль root MySQL или MariaDB в Windows» которую я специально написал по вашему вопросу, там всё подробно и пошагово описано как сбросить забытый пароль MySQL и MariaDB.

          2. GineTik

            спасибо огромное помогло ввести пароль рут)

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *