Ошибки MySQL и MariaDB: как найти причину по номеру
MySQL и MariaDB пишут номер ошибки и короткое объяснение. Найдите номер или слова из своего сообщения в таблице — для каждой ошибки есть страница с исправлением по шагам.
Содержание 9
Найдите свою ошибку
Посмотрите на номер после слова ERROR или на английский текст и найдите его в левой колонке.
| Номер и слова в сообщении | Что случилось | Что делать |
|---|---|---|
1045 Access denied for user … (using password: YES) | Пароль не подошёл, такого пользователя нет или он заведён для другого адреса | Разбор |
1698 Access denied for user 'root'@'localhost' | В Ubuntu root входит в базу без пароля, но только через sudo | Разбор |
2002 Can't connect to local … server through socket | Служба базы не запущена или программа ищет её не там | Разбор |
2003 Can't connect to … server on | Подключиться к базе по сети не удалось | Разбор |
1049 Unknown database | Базы с таким именем нет | Разбор |
1044 Access denied for user … to database | У пользователя нет прав на эту базу или в имени базы опечатка | Разбор |
1146 Table … doesn't exist | В базе нет такой таблицы | Разбор |
1273 Unknown collation: 'utf8mb4_0900_ai_ci' | Дамп из MySQL 8 загружают в MariaDB | Разбор |
1227 you need (at least one of) the SUPER | В дампе указан пользователь со старого сервера | Разбор |
1819 Your password does not satisfy the current policy requirements | Пароль не проходит проверку сложности | Разбор |
1153 или 2020 Got a packet bigger than 'max_allowed_packet' | Команда или строка таблицы больше допустимого размера | Разбор |
mysqldump: … PROCESS privilege или when using LOCK TABLES | Пользователю не хватает прав на выгрузку базы | Разбор |
Как читать сообщение
Программа mysql выводит ошибку одной строкой:
ERROR 1045 (28000): Access denied for user 'ivan'@'localhost' (using password: YES)1045— номер ошибки. По нему ищите в таблице выше.(28000)— код SQLSTATE, общий для целой группы ошибок. Для поиска причины он не нужен.- Дальше — текст ошибки. В кавычках в него подставлены ваши данные: имя пользователя, адрес, имя базы или таблицы.
Если вы загружаете файл командой вида mysql -u ivan -p base < base.sql, в сообщении будет ещё номер строки файла, на которой загрузка остановилась:
ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_0900_ai_ci'Сайты и программы на PHP показывают тот же номер и тот же английский текст, но внутри своего сообщения. Найдите в нём число из четырёх цифр и слова после него.
MySQL или MariaDB: как узнать
Номера ошибок из этой таблицы у MySQL и MariaDB общие, а вот названия служб и некоторые команды отличаются. Чтобы узнать, что стоит на сервере, выполните:
mysql --versionЕсли в ответе есть слово MariaDB — у вас MariaDB. Если его нет — MySQL. Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
Как войти в базу на своём сервере
sudo mysqlЕсли система спросит пароль, введите пароль своего пользователя на сервере, а не пароль базы. Символы при вводе не видны — так и должно быть, просто наберите пароль и нажмите Enter. Строка ввода сменится на mysql> у MySQL или на MariaDB [(none)]> у MariaDB: теперь можно вводить команды для базы. Каждая команда заканчивается точкой с запятой. Выйти обратно — команда exit.
Так входят на свой VPS, если MySQL или MariaDB поставлены из пакетов Ubuntu и вход для root вы не меняли. Если в ответ пришла ошибка 1698 или 1045, разбор — на страницах 1698 и 1045.
Работает ли служба базы
Для MySQL:
sudo systemctl status mysqlДля MariaDB:
sudo systemctl status mariadbСтрока Active: active (running) значит, что база работает. Слова inactive (dead) или failed значат, что она остановлена или упала. Чтобы вернуться к вводу команд, нажмите клавишу Q. Что делать, если служба не работает, — на странице ошибки 2002.
Где журнал ошибок
Если база не запускается или ведёт себя странно, причину она пишет в журнал. MySQL из пакетов Ubuntu пишет его в файл — последние 50 строк покажет команда:
sudo tail -n 50 /var/log/mysql/error.logMariaDB из пакетов Ubuntu пишет в системный журнал — последние 50 строк:
sudo journalctl -u mariadb -n 50 --no-pagerИщите строки со словом [ERROR]: в них сказано, что пошло не так.
Если сайт на обычном хостинге
На обычном хостинге команды sudo нет: базы, пользователей и пароли там создают и меняют в панели хостинга, в разделе про базы данных. Имя базы, пользователя, пароль и адрес сервера базы сайт берёт из своего файла настроек — у WordPress это wp-config.php в папке сайта. Если они не совпадают с тем, что указано в панели, исправьте файл.
Тексты ошибок и настройки сверены с исходным кодом 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.46: errmsg.cc — тексты ошибок программы-клиента MySQL.
- Исходный код клиентской библиотеки MariaDB: ma_errmsg.c — тексты ошибок программы-клиента MariaDB.
- Исходный код MySQL 8.0.46: mysql.cc — как программа mysql выводит ошибку и номер строки файла.
- Справочник ошибок сервера MySQL 8.0 — номера, коды SQLSTATE и тексты.
- Пакет MySQL в Ubuntu 24.04: mysqld.cnf — файл настроек сервера: bind-address, журнал, max_allowed_packet.
- Пакет MariaDB в Ubuntu 24.04: 50-server.cnf — файл настроек сервера: bind-address, max_allowed_packet.
- Пакет MariaDB в Ubuntu 24.04: mariadb-server.README.Debian — вход root через unix_socket.
- WordPress: файл wp-config.php — настройки базы DB_NAME, DB_USER, DB_PASSWORD, DB_HOST.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026