MySQL 1045: Access denied for user (using password: YES) — что делать
Ошибка 1045 значит, что база не пустила пользователя: пароль не подошёл, такого пользователя нет или он заведён для другого адреса. Ниже — как найти, что именно, и исправить.
Содержание 10
Как выглядит ошибка
ERROR 1045 (28000): Access denied for user 'ivan'@'localhost' (using password: YES)'ivan'— имя, под которым пытались войти.'localhost'— откуда пришло подключение, как его видит сервер базы. localhost — с того же сервера.using password: YES— пароль был передан, но вход не удался.using password: NO— пароль не передан вовсе: в команде нет ключа-pили в настройках сайта пароль пустой.
Сообщение одинаковое и когда пароль неверный, и когда такого пользователя нет: сервер специально не говорит, что из этого случилось. Поэтому проверьте и то и другое.
Шаг 1. Проверьте, как вводите пароль
Для входа под своим пользователем наберите команду с ключом -p:
mysql -u ivan -pПрограмма спросит Enter password: — введите пароль пользователя базы и нажмите Enter. Символы при вводе не видны. Проверьте раскладку клавиатуры и Caps Lock. Если пароль копируете, следите, чтобы не захватить лишний пробел.
Если после -p через пробел стоит слово, это не пароль, а имя базы: команда mysql -u ivan -p base спросит пароль и откроет базу base.
Шаг 2. Посмотрите, какие пользователи есть
На своём VPS войдите в базу с правами администратора:
sudo mysqlЕсли система спросит пароль, введите пароль своего пользователя на сервере, а не пароль базы. Символы при вводе не видны — так и должно быть, просто наберите пароль и нажмите Enter. Строка ввода сменится на mysql> у MySQL или на MariaDB [(none)]> у MariaDB: теперь можно вводить команды для базы. Каждая команда заканчивается точкой с запятой. Выйти обратно — команда exit.
и выполните:
SELECT user, host FROM mysql.user;Найдите в списке своего пользователя. В колонке host — откуда ему можно входить: localhost — только с этого же сервера, % — с любого адреса, IP-адрес — только с него. Пользователь 'ivan'@'localhost' и пользователь с тем же именем и другим адресом — это две разные учётные записи со своими паролями.
Если вашего пользователя в списке нет или у него другой адрес, переходите к шагу 4.
Шаг 3. Задайте пароль заново
В той же базе выполните команду — подставьте имя и адрес из списка и свой новый пароль в одинарных кавычках:
ALTER USER 'ivan'@'localhost' IDENTIFIED BY 'новый-пароль';Ответ Query OK значит, что пароль сменён. Если в ответ пришла ошибка 1819 — пароль слишком простой, разбор на отдельной странице. Выйдите командой exit и проверьте вход: mysql -u ivan -p.
Шаг 4. Если пользователя нет — заведите его
Создайте пользователя и дайте ему права на базу сайта (вместо base — имя своей базы):
CREATE USER 'ivan'@'localhost' IDENTIFIED BY 'новый-пароль';
GRANT ALL PRIVILEGES ON base.* TO 'ivan'@'localhost';Такой пользователь может работать только со своей базой и только с этого же сервера — для сайта на том же VPS этого достаточно.
Шаг 5. Поправьте настройки сайта
Если ошибку показывает сайт, он берёт имя пользователя и пароль из своего файла настроек. У WordPress это wp-config.php в папке сайта. Откройте его (как редактировать файл — в разделе про nano):
sudo nano /var/www/example.ru/wp-config.phpВместо /var/www/example.ru подставьте папку своего сайта. Проверьте строки DB_NAME, DB_USER, DB_PASSWORD и DB_HOST: значения в кавычках должны совпадать с именем базы, пользователем и паролем. Сохраните файл и обновите страницу сайта.
Если сайт на обычном хостинге
На обычном хостинге команды sudo нет: базы, пользователей и пароли там создают и меняют в панели хостинга, в разделе про базы данных. После смены пароля впишите его в настройки сайта — у WordPress в wp-config.php, — иначе сайт покажет ту же ошибку.
Если в сообщении root
Если в ошибке стоит 'root'@'localhost', а слов using password нет — это ошибка 1698, разбор на отдельной странице. Пользователь root в MySQL и MariaDB из пакетов Ubuntu входит командой sudo mysql без пароля базы.
Тексты ошибок и настройки сверены с исходным кодом MySQL 8.0.46 и MariaDB 10.11.14 — эти версии ставятся из пакетов Ubuntu 24.04. В других версиях строки могут немного отличаться.
Источники
- Исходный код MySQL 8.0.46: messages_to_clients.txt — тексты ошибок сервера MySQL.
- Исходный код MariaDB 10.11.14: errmsg-utf8.txt — тексты ошибок сервера MariaDB.
- Справочник ошибок сервера MySQL 8.0 — номера, коды SQLSTATE и тексты.
- Исходный код MySQL 8.0.46: sql_authentication.cc — один ответ и при неверном пароле, и при неизвестном пользователе.
- Документация MySQL 8.0: ALTER USER — смена пароля пользователя.
- WordPress: файл wp-config.php — настройки базы DB_NAME, DB_USER, DB_PASSWORD, DB_HOST.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026