Ошибки

MySQL 1698: Access denied for user 'root'@'localhost' — как войти

В Ubuntu пользователь root в MySQL и MariaDB входит без пароля базы, но только из-под sudo. Наберите sudo mysql, а для сайта и программ заведите отдельного пользователя с паролем.

Обновлено 10.10.2026≈ 4 мин чтения
Содержание 8

Как выглядит ошибка

ivan@myserver:~$ mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Ошибка будет, какой бы пароль вы ни ввели, и даже если просто нажать Enter.

Почему так

При установке из пакетов Ubuntu пользователь root в базе получает особый способ входа. База проверяет не пароль, а то, от имени какого пользователя системы запущена команда. Пускает она только root системы — то есть команду, запущенную через sudo.

  • В MySQL этот способ называется auth_socket.
  • В MariaDB — unix_socket. Пароль для root там тоже не задан, поэтому войти по паролю нельзя.

Это сделано для безопасности: подобрать пароль к root нельзя, потому что пароля нет. Войти может только тот, у кого есть права администратора на самом сервере.

Как войти

sudo mysql

Если система спросит пароль, введите пароль своего пользователя на сервере, а не пароль базы. Символы при вводе не видны — так и должно быть, просто наберите пароль и нажмите Enter. Строка ввода сменится на mysql> у MySQL или на MariaDB [(none)]> у MariaDB: теперь можно вводить команды для базы. Каждая команда заканчивается точкой с запятой. Выйти обратно — команда exit.

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

Для сайта заведите отдельного пользователя

Сайту и программам sudo недоступен, поэтому им нужен свой пользователь с паролем и правами только на свою базу. Войдите через sudo mysql и выполните три команды — вместо base подставьте имя базы, вместо ivan — имя пользователя, вместо новый-пароль — свой пароль:

CREATE DATABASE base CHARACTER SET utf8mb4;
CREATE USER 'ivan'@'localhost' IDENTIFIED BY 'новый-пароль';
GRANT ALL PRIVILEGES ON base.* TO 'ivan'@'localhost';

Если база уже есть, первую команду пропустите. Выйдите командой exit и проверьте вход нового пользователя:

mysql -u ivan -p base

Эти имя, пароль и базу впишите в настройки сайта. Если MySQL ответил ошибкой 1819, пароль слишком простой — разбор.

Не переводите root на вход по паролю

Если задать root пароль, к пользователю с полными правами появится вход по паролю, а пароль можно подобрать. Отдельный пользователь для каждого сайта надёжнее: если пароль сайта утечёт, пострадает только его база.

mysql_secure_installation в Ubuntu

Программа mysql_secure_installation из пакета MySQL в Ubuntu не задаёт пароль root. Вместо этого она пишет:

Skipping password set for root as authentication with auth_socket is used by default.

Это не ошибка: так и задумано, root по-прежнему входит через sudo mysql.

Тексты ошибок и настройки сверены с исходным кодом MySQL 8.0.46 и MariaDB 10.11.14 — эти версии ставятся из пакетов Ubuntu 24.04. В других версиях строки могут немного отличаться.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026