This solution worked for me (http://dev.mysql.com/doc/refman/5.5/en/resetting-permissions.html) :
C.5.4.1.1. Resetting the Root Password: Windows Systems
On Windows, use the following procedure to reset the password for all MySQL root accounts:
Log on to your system as Administrator.
Stop the MySQL server if it is running. For a server that is running as a Windows service, go to the Services manager: From the Start menu, select Control Panel, then Administrative Tools, then Services. Find the MySQL service in the list and stop it.
If your server is not running as a service, you may need to use the Task Manager to force it to stop.
Create a text file containing the following statements. Replace the password with the password that you want to use.
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Write the UPDATE and FLUSH statements each on a single line. The UPDATE statement resets the password for all root accounts, and the FLUSH statement tells the server to reload the grant tables into memory so that it notices the password change.
Save the file. For this example, the file will be named C:mysql-init.txt.
Open a console window to get to the command prompt: From the Start menu, select Run, then enter cmd as the command to be run.
Start the MySQL server with the special —init-file option (notice that the backslash in the option value is doubled):
C:> C:mysqlbinmysqld --init-file=C:\mysql-init.txt
If you installed MySQL to a location other than C:mysql, adjust the command accordingly.
The server executes the contents of the file named by the —init-file option at startup, changing each root account password.
You can also add the —console option to the command if you want server output to appear in the console window rather than in a log file.
If you installed MySQL using the MySQL Installation Wizard, you may need to specify a —defaults-file option:
C:> "C:Program FilesMySQLMySQL Server 5.5binmysqld.exe"
--defaults-file="C:\Program Files\MySQL\MySQL Server 5.5\my.ini"
--init-file=C:\mysql-init.txt
The appropriate —defaults-file setting can be found using the Services Manager: From the Start menu, select Control Panel, then Administrative Tools, then Services. Find the MySQL service in the list, right-click it, and choose the Properties option. The Path to executable field contains the —defaults-file setting.
After the server has started successfully, delete C:mysql-init.txt.
You should now be able to connect to the MySQL server as root using the new password. Stop the MySQL server, then restart it in normal mode again. If you run the server as a service, start it from the Windows Services window. If you start the server manually, use whatever command you normally use.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 2010-02-18 16:34:20
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Тема: Проблема при настройке mysql
При настройке, установив пароль, в окне processing configuration…, не выполняется пункт — Apply security settings. Я удалял мускл по-новому ставил, и так раз 5, потом решил попробовать как оно будет работать.
Запустил скрипт:
<?php
echo «php работает»;
$link=mysql_connect(«localhost»,»root»,»slagiotore»);
?>
Выдало:php работает
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@’localhost’ (using password: YES) in C:apachelocalhostwwwindex.php on line 11
При запуске phpmyadmin выдаёт вот такое:
Добро пожаловать в phpMyAdmin
Ошибка
Ответ MySQL: Документация
#1045 — Access denied for user ‘root’@’localhost’ (using password: YES)
phpMyAdmin не смог установить соединение с сервером MySQL. Проверьте хост, имя пользователя и пароль установленные в конфигурационном файле config.inc.php и удостоверьтесь, что они соответствуют данным полученным от администратора сервера MySQL.
Помогите пожалуйста новичку.
2 Ответ от Hanut 2010-02-18 17:17:52

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: Проблема при настройке mysql
mkostil
Обычно выдает ошибку в пункте Apply security settings, если брандмауэр блокирует порт MySQL (3306).
Попробуйте установить MySQL отключившись от Интернет и выключив брандмауэр. Разумеется, в правилах брандмауэра надо разрешить процессу MySQL принятие соединений на порту 3306.
3 Ответ от mkostil 2010-02-20 02:57:39
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Re: Проблема при настройке mysql
Hanut
Пробовал отключаться от интернета, брандмауэр выключен, в исключениях добавил порт 3306, но результата нет. Подскажи пожалуйста ещё чего-нибудь, заранее спасибо
4 Ответ от Hanut 2010-02-20 11:57:33

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: Проблема при настройке mysql
mkostil
Пробуйте запустить сервис MySQL из Control Panel -> Administrative Tools -> Services. Если не запустится, смотрите ошибки в журнале операционной системы или в журнале ошибок MySQL.
5 Ответ от mkostil 2010-02-20 12:57:26
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Re: Проблема при настройке mysql
Hanut
Дело в том что, служба мускл запускается и останавливается, не только с панели управления но и с помощью созданных ярлыков. Но при попытке подключения к БД, как я писал в первом сообщении, не получается.
6 Ответ от mkostil 2010-02-20 13:13:40
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Re: Проблема при настройке mysql
Hanut
При первой установке mysql, не исключаю, что мог натупить с паролями, читал что может самая первая БД не удаляться и из-за этого такая петрушка. Если это действительно так, то как мне её найти и удалить. Я удаляю мускл с панели управления + с програм файлс папку мускл.
7 Ответ от Hanut 2010-02-20 20:26:50

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: Проблема при настройке mysql
Попробуйте зайти в MySQL из командной строки (cmd).
mysql -uroot -ppassword
Вместо password введите пароль пользователя root (ключ -p и последующий пароль должны быть вплотную, как написано).
Если захотите переустановить MySQL, то удалить надо так же каталог data, который находится здесь: C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.1data
8 Ответ от pau4ok 2010-02-21 15:06:55
- pau4ok
- Редкий гость
- Неактивен
- Откуда: г. Одесса
- Зарегистрирован: 2010-02-21
- Сообщений: 2
Re: Проблема при настройке mysql
У меня точно такая жа проблема, переустановил маскл но всеравно пишет, что не открыт порт. Возможно проблема в том что у меня роутер, но в его настройках я открыл порт 3306. Если через командную строку заходить то выбивает тот же эрор:
#1045 — Access denied for user ‘root’@’localhost’ (using password: YES)
9 Ответ от Hanut 2010-02-21 16:30:12

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: Проблема при настройке mysql
pau4ok сказал:
#1045 — Access denied for user ‘root’@’localhost’ (using password: YES)
Это означает, что MySQL работает, но пароль не принимается.
10 Ответ от pau4ok 2010-02-21 16:35:43
- pau4ok
- Редкий гость
- Неактивен
- Откуда: г. Одесса
- Зарегистрирован: 2010-02-21
- Сообщений: 2
Re: Проблема при настройке mysql
Ммм и что делать?)
11 Ответ от Hanut 2010-02-21 17:20:06

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: Проблема при настройке mysql
pau4ok
Попробуйте переустановить MySQL удалив сперва каталог data.
12 Ответ от mkostil 2010-02-21 17:28:10
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Re: Проблема при настройке mysql
Hanut
ОГРОМНЕЙШЕЕ СПАСИБО!!!!!!!!!!!!!!!
Переустановил я мускл, а перед этим удалил каталог, правда не data а MySql в которой находиться data, я думаю разницы нет, и все прошло как по маслу. Только если кто-то столкнётся с этой проблемой, перегрузите комп, а то я сразу обрадовался конфигурация прошла успешно, а не тестовый скрипт не хотел работать, на phpmyadmin зашёл за 3 разом, а после перезагрузки всё работает. Hanut ещё раз тебе спасибо.
13 Ответ от Skolzkiy 2011-04-11 19:45:44
- Skolzkiy
- Редкий гость
- Неактивен
- Зарегистрирован: 2011-04-11
- Сообщений: 3
Re: Проблема при настройке mysql
Народ..выручайте)
У меня тоже возникает проблема на этом месте….но с другой ошибкой
The securite setting could not be applied to the database the conection has faild with the following error.
Error Nr. 2003
Can’t connect to MySQL server on ‘localhost'(10061)
И там ещё много чего…)
Кто может сказать в чём проблема..я уже переустанавливал программу 10 раз…перезагружал, порт открывал…но толку 0…а вот как указано с папкой data, дак её я не нашёл вообще….искал в корне где установлена программа, но там были только….bin, lib, share….и ещё разные файлы…версия программы 5.1ююю
Заранее спасибки;)
14 Ответ от DiapaZon 2011-04-11 20:36:04
- DiapaZon
- Редкий гость
- Неактивен
- Зарегистрирован: 2011-04-11
- Сообщений: 2
Re: Проблема при настройке mysql
Подскажите пожалуйста как мне изменить сохранения БД из C:Documents and SettingsAll UsersApplication DataMySQL Server 5.1data в CMySQL5data Заранее спасибо) ![]()
15 Ответ от Hanut 2011-04-11 21:59:36

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: Проблема при настройке mysql
Skolzkiy сказал:
с папкой data, дак её я не нашёл вообще
Ищите где-то здесь.
C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/
16 Ответ от Hanut 2011-04-11 22:00:46

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: Проблема при настройке mysql
DiapaZon сказал:
Подскажите пожалуйста как мне изменить сохранения БД из C:Documents and SettingsAll UsersApplication DataMySQL Server 5.1data в CMySQL5data Заранее спасибо)
В my.ini директива datadir.
17 Ответ от Skolzkiy 2011-04-11 22:12:27
- Skolzkiy
- Редкий гость
- Неактивен
- Зарегистрирован: 2011-04-11
- Сообщений: 3
Re: Проблема при настройке mysql
Hanut сказал:
Ищите где-то здесь.
C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/
В том то и дело..я при установки путь не менял..и он по стандарту в C фигачил…установил 66 версию..папка дата появляется….но удаляю её..но толку от этого 0…(
ставлю заново мускл..но всё равно ошибку выдаёт…и я так понимаю, ругается он на порт((((
А да…и по чему то, после удаления… остается название серва…т.е. нельзя его больше создать…так как он уже существует…..я хз вообще чё делать…(
18 Ответ от Hanut 2011-04-11 23:31:34

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: Проблема при настройке mysql
Skolzkiy сказал:
и по чему то, после удаления… остается название серва
Это я не понял. Где остается? Если остается сервис MySQL, значит вы его не удалили.
19 Ответ от DmitryV 2011-04-12 10:45:13
- DmitryV
- Пенсионер
- Неактивен
- Откуда: Санкт-Петербург, Россия
- Зарегистрирован: 2010-07-31
- Сообщений: 558
Re: Проблема при настройке mysql
MySQL версию выше 5.5 не устанавливайте 6 это сырые беты.
20 Ответ от Skolzkiy 2011-04-12 10:52:15
- Skolzkiy
- Редкий гость
- Неактивен
- Зарегистрирован: 2011-04-11
- Сообщений: 3
Re: Проблема при настройке mysql
Hanut сказал:
Это я не понял. Где остается? Если остается сервис MySQL, значит вы его не удалили.
Ну при настройках там есть название типа сервиса…ну вот там и остаётся по чему то…хотя через панель программа ыла удалена…
DmitryV сказал:
MySQL версию выше 5.5 не устанавливайте 6 это сырые беты.
Спасибки…буду знать)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
This solution worked for me (http://dev.mysql.com/doc/refman/5.5/en/resetting-permissions.html) :
C.5.4.1.1. Resetting the Root Password: Windows Systems
On Windows, use the following procedure to reset the password for all MySQL root accounts:
Log on to your system as Administrator.
Stop the MySQL server if it is running. For a server that is running as a Windows service, go to the Services manager: From the Start menu, select Control Panel, then Administrative Tools, then Services. Find the MySQL service in the list and stop it.
If your server is not running as a service, you may need to use the Task Manager to force it to stop.
Create a text file containing the following statements. Replace the password with the password that you want to use.
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Write the UPDATE and FLUSH statements each on a single line. The UPDATE statement resets the password for all root accounts, and the FLUSH statement tells the server to reload the grant tables into memory so that it notices the password change.
Save the file. For this example, the file will be named C:mysql-init.txt.
Open a console window to get to the command prompt: From the Start menu, select Run, then enter cmd as the command to be run.
Start the MySQL server with the special —init-file option (notice that the backslash in the option value is doubled):
C:> C:mysqlbinmysqld --init-file=C:mysql-init.txt
If you installed MySQL to a location other than C:mysql, adjust the command accordingly.
The server executes the contents of the file named by the —init-file option at startup, changing each root account password.
You can also add the —console option to the command if you want server output to appear in the console window rather than in a log file.
If you installed MySQL using the MySQL Installation Wizard, you may need to specify a —defaults-file option:
C:> "C:Program FilesMySQLMySQL Server 5.5binmysqld.exe"
--defaults-file="C:Program FilesMySQLMySQL Server 5.5my.ini"
--init-file=C:mysql-init.txt
The appropriate —defaults-file setting can be found using the Services Manager: From the Start menu, select Control Panel, then Administrative Tools, then Services. Find the MySQL service in the list, right-click it, and choose the Properties option. The Path to executable field contains the —defaults-file setting.
After the server has started successfully, delete C:mysql-init.txt.
You should now be able to connect to the MySQL server as root using the new password. Stop the MySQL server, then restart it in normal mode again. If you run the server as a service, start it from the Windows Services window. If you start the server manually, use whatever command you normally use.
Содержание
- MySQL error 1045
- Причина возникновения ошибки 1045
- Что делать?
- phpmyadmin
- Установка новой версии
- MySQL error 1045 (Ошибка 1045)
- Причина возникновения ошибки 1045
- Что делать?
- phpmyadmin
- Установка новой версии
- Mysql 1045 access denied for user
- Localhost и 127.0.0.1
- Не указан хост в явном виде
- Использование кавычек
- Анонимный (пустой) пользователь
- Пароль утерян
- Самое главное
- Fixing MySQL 1045 Error: Access Denied
- MySQL 1045 error Access Denied triggers in the following cases:
- 1) Connecting to wrong host:
- 2) User does not exist:
- 3) User exists but client host does not have permission to connect:
- 4) Password is wrong, or the user forgot his password:
- 5) Special characters in the password being converted by Bash:
- 6) SSL is required but the client is not using it:
- 7) PAM backend not working:
MySQL error 1045
Автор: Василий Лукьянчиков , vl (at) sqlinfo (dot) ru
Статистика форума SQLinfo показывает, что одной из наиболее популярных проблем является ошибка mysql №1045 (ошибка доступа).
Текст ошибки содержит имя пользователя, которому отказано в доступе, компьютер, с которого производилось подключение, а также ключевое слово YES или NO, которые показывают использовался ли при этом пароль или была попытка выполнить подключение с пустым паролем.
Причина возникновения ошибки 1045
Как ни банально, но единственная причина это неправильная комбинация пользователя и пароля. Обратите внимание, речь идет о комбинации пользователь и пароль, а не имя пользователя и пароль. Это очень важный момент, так как в MySQL пользователь характеризуется двумя параметрами: именем и хостом, с которого он может обращаться. Синтаксически записывается как ‘имя пользователя’@’имя хоста’.
Таким образом, причина возникновения MySQL error 1045 — неправильная комбинация трех параметров: имени пользователя, хоста и пароля.
В качестве имени хоста могут выступать ip адреса, доменные имена, ключевые слова (например, localhost для обозначения локальной машины) и групповые символы (например, % для обозначения любого компьютера кроме локального). Подробный синтаксис смотрите в документации
Замечание: Важно понимать, что в базе не существует просто пользователя с заданным именем (например, root), а существует или пользователь с именем root, имеющий право подключаться с заданного хоста (например, root@localhost) или даже несколько разных пользователей с именем root (root@127.0.0.1, root@webew.ru, root@’мой домашний ip’ и т.д.) каждый со своим паролем и правами.
Примеры.
1) Если вы не указали в явном виде имя хоста
2) Другой первопричиной ошибки mysql 1045 может быть неправильное использование кавычек.
3) Неочевидный вариант. IP адрес 127.0.0.1 в имени хоста соответствует ключевому слову localhost. С одной стороны, root@localhost и ‘root’@’127.0.0.1’ это синонимы, с другой, можно создать двух пользователей с разными паролями. И при подключении будет выбран тот, который распологается в таблице привелегий (mysql.user) раньше.
4) Аккаунт с пустым именем пользователя трактуется сервером MySQL как анонимный, т.е. позволяет подключаться пользователю с произвольным именем или без указания имени. Например, вы создали пользователя »@localhost с пустым паролем, чтобы каждый мог подключиться к базе. Однако, если при подключении вы укажите пароль отличный от пустого, то получите ошибку 1045. Как говорилось ранее, нужно совпадение трех параметров: имени пользователя, хоста и пароля, а пароль в данном случае не совпадает с тем, что в базе.
Что делать?
Во-первых, нужно убедиться, что вы используете правильные имя пользователя и пароль. Для этого нужно подключиться к MySQL с правами администратора (если ошибка 1045 не дает такой возможности, то нужно перезапустить сервер MySQL в режиме —skip-grant-tables), посмотреть содержимое таблицы user служебной базы mysql, в которой хранится информация о пользователях, и при необходимости отредактировать её.
Если изначально была ошибка:
Экзотический пример. Устанавливаете новый пароль для root@localhost в режиме —skip-grant-tables, однако после перезагрузки сервера по прежнему возникает ошибка при подключении через консольный клиент:
ERROR 1045 ( 28000 ) : Access denied for user ‘root’ @ ‘localhost’ ( using password: YES ) Оказалось, что было установлено два сервера MySQL, настроенных на один порт.
phpmyadmin
При открытии в браузере phpmyadmin получаете сообщение:
Error
MySQL said:
#1045 — Access denied for user ‘root’@’localhost’ (using password: NO)
Connection for controluser as defined in your configuration failed.
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.
Ни логина, ни пароля вы не вводили, да и пхпадмин их нигде требовал, сразу выдавая сообщение об ошибке. Причина в том, что данные для авторизации берутся из конфигурационного файла config.inc.php Необходимо заменить в нем строчки
Установка новой версии
Устанавливаете новую версию MySQL, но в конце при завершении конфигурации выпадает ошибка:
Это происходит потому, что ранее у вас стоял MySQL, который вы удалили без сноса самих баз. Если вы не помните старый пароль и вам нужны эти данные, то выполните установку новой версии без смены пароля, а потом смените пароль вручную через режим —skip-grant-tables.
Источник
MySQL error 1045 (Ошибка 1045)
Одной из наиболее популярных проблем является ошибка mysql №1045 (ошибка доступа).
Текст ошибки содержит имя пользователя, которому отказано в доступе, компьютер, с которого производилось подключение, а также ключевое слово YES или NO, которые показывают использовался ли при этом пароль или была попытка выполнить подключение с пустым паролем.
Причина возникновения ошибки 1045
Как ни банально, но единственная причина это неправильная комбинация пользователя и пароля. Обратите внимание, речь идет о комбинации пользователь и пароль, а не имя пользователя и пароль. Это очень важный момент, так как в MySQL пользователь характеризуется двумя параметрами: именем и хостом, с которого он может обращаться. Синтаксически записывается как ‘имя пользователя’@’имя хоста’.
Таким образом, причина возникновения MySQL error 1045 — неправильная комбинация трех параметров: имени пользователя, хоста и пароля.
В качестве имени хоста могут выступать ip адреса, доменные имена, ключевые слова (например, localhost для обозначения локальной машины) и групповые символы (например, % для обозначения любого компьютера кроме локального). Подробный синтаксис смотрите в документации
Замечание: Важно понимать, что в базе не существует просто пользователя с заданным именем (например, root), а существует или пользователь с именем root, имеющий право подключаться с заданного хоста (например, root@localhost) или даже несколько разных пользователей с именем root (root@127.0.0.1, root@webew.ru, root@’мой домашний ip’ и т.д.) каждый со своим паролем и правами.
Примеры.
1) Если вы не указали в явном виде имя хоста
то у вас будет создан пользователь ‘ODBC’@’%’ и при попытке подключения с локальной машины вы получите ошибку:
так как пользователя ‘ODBC’@’localhost’ у вас не существует.
2) Другой первопричиной ошибки mysql 1045 может быть неправильное использование кавычек.
Правильно имя пользователя и хоста нужно заключать в кавычки отдельно, т.е. ‘имя пользователя’@’имя хоста’
3) Неочевидный вариант. IP адрес 127.0.0.1 в имени хоста соответствует ключевому слову localhost. С одной стороны, root@localhost и ‘root’@’127.0.0.1’ это синонимы, с другой, можно создать двух пользователей с разными паролями. И при подключении будет выбран тот, который распологается в таблице привелегий (mysql.user) раньше.
4) Аккаунт с пустым именем пользователя трактуется сервером MySQL как анонимный, т.е. позволяет подключаться пользователю с произвольным именем или без указания имени. Например, вы создали пользователя »@localhost с пустым паролем, чтобы каждый мог подключиться к базе. Однако, если при подключении вы укажите пароль отличный от пустого, то получите ошибку 1045. Как говорилось ранее, нужно совпадение трех параметров: имени пользователя, хоста и пароля, а пароль в данном случае не совпадает с тем, что в базе.
Что делать?
Во-первых, нужно убедиться, что вы используете правильные имя пользователя и пароль. Для этого нужно подключиться к MySQL с правами администратора (если ошибка 1045 не дает такой возможности, то нужно перезапустить сервер MySQL в режиме —skip-grant-tables), посмотреть содержимое таблицы user служебной базы mysql, в которой хранится информация о пользователях, и при необходимости отредактировать её.
Если изначально была ошибка:
значит вы указывали при подключении неверный пароль, так как пользователь root@localhost существует. Сам пароль храниться в зашифрованном виде и его нельзя узнать, можно лишь задать новый
в данном случае в таблице привилегий отсутствует пользователь ‘ODBC’@’localhost’. Его нужно создать, используя команды GRANT, CREATE USER и SET PASSWORD.
Экзотический пример. Устанавливаете новый пароль для root@localhost в режиме —skip-grant-tables, однако после перезагрузки сервера по прежнему возникает ошибка при подключении через консольный клиент:
ERROR 1045 ( 28000 ) : Access denied for user ‘root’ @ ‘localhost’ ( using password: YES ) Оказалось, что было установлено два сервера MySQL, настроенных на один порт.
phpmyadmin
При открытии в браузере phpmyadmin получаете сообщение:
Ни логина, ни пароля вы не вводили, да и пхпадмин их нигде требовал, сразу выдавая сообщение об ошибке. Причина в том, что данные для авторизации берутся из конфигурационного файла config.inc.php Необходимо заменить в нем строчки
Установка новой версии
Устанавливаете новую версию MySQL, но в конце при завершении конфигурации выпадает ошибка:
Это происходит потому, что ранее у вас стоял MySQL, который вы удалили без сноса самих баз. Если вы не помните старый пароль и вам нужны эти данные, то выполните установку новой версии без смены пароля
Источник
Mysql 1045 access denied for user
![]()
Технический редактор Highload
При подключении к MySQL, ERROR 1045 (28000): Access denied for user означает неверную комбинацию имени пользователя и/или хоста и/или пароля. Причин возникновения несколько.

Собираем на дрон для штурмовиков Николаевской области. Он поможет найти и уничтожить врага
Localhost и 127.0.0.1
Если вы уверены, что введенная комбинация пользователь/пароль верна, то следующим шагом будет проверка адреса. Localhost соответствует IP-адресу 127.0.0.1 , а пользователи ‘user’@’127.0.0.1’ и ‘user’@’localhost’ взаимозаменяемы. Вот только для каждого из них можно задать отдельный пароль, а при входе будет выбираться пользователь, который находится выше в таблице mysql.user .
Не указан хост в явном виде
Возможно при создании пользователя не был указан хост:
CREATE USER ‘user’ IDENTIFIED BY ‘pass’
Проблема также может появиться при выдаче прав GRANT ALL

В этом случае будет создан пользователь ‘user’@’%’ , а при попытке подключения локально появится ошибка, так как пользователя ‘user’@’localhost’ не существует.
Использование кавычек
Еще одна неявная причина ошибки — неправильное использование кавычек:
CREATE USER ‘[email protected]’ IDENTIFIED BY ‘somepass’
Анонимный (пустой) пользователь
Наличие “пустого” пользователя ”@’localhost’ или ”@’127.0.0.1′ – самая неочевидная причина проблемы. При подключении к БД, сервер в первую очередь проверяет пользователей с явно указанными IP-адресом или localhost-ом, проверяя по таблице mysql.user . То есть, система попробует подключить пользователя ‘user’@’localhost’ , проверяя пользователя ”@’localhost’ . В этом случае и появится ошибка 1045: Access denied for user. Лучшим решением проблемы будет удаление анонимного юзера:
Не забудьте указать свой хост
Пароль утерян
Если же ошибок нет и вы уверены, что имя пользователя верное, тогда единственное решение – смена пароля:
Подключение под суперпользователем, обновление таблицы mysql.user
Если же утерян пароль суперпользователя, то нужно выполнить следующее:
Установка нового root-пароля и обновление привилегий
Самое главное
Главная причина ошибки — несоответствие имени пользователя, хоста и пароля. Так что проверяйте учетные данные, отключайте анонимного пользователя и не используйте root для удаленного подключения.
Этот текст был написан несколько лет назад. С тех пор упомянутые здесь инструменты и софт могли получить обновления. Пожалуйста, проверяйте их актуальность.
Источник
Fixing MySQL 1045 Error: Access Denied
During our work in support, we see this again and again: “I try to connect to MySQL and am getting a 1045 error”, and most times it comes accompanied with “…but I am sure my user and password are OK”. So we decided it was worth showing other reasons this error may occur.
MySQL 1045 error Access Denied triggers in the following cases:
1) Connecting to wrong host:
If not specifying the host to connect (with -h flag), MySQL client will try to connect to the localhost instance while you may be trying to connect to another host/port instance.
Fix: Double check if you are trying to connect to localhost, or be sure to specify host and port if it’s not localhost:
2) User does not exist:
Fix: Double check if the user exists:
If the user does not exist, create a new user:
3) User exists but client host does not have permission to connect:
Fix: You can check to see which host user/host MySQL allows connections with the following query:
If you need to check from which IP the client is connecting, you can use the following Linux commands for server IP:
or for public IP:
You can then create a user with correct Host (client IP), or with ‘%’ (wildcard) to match any possible IP:
4) Password is wrong, or the user forgot his password:
Fix: Check and/or reset password:
You cannot read user passwords in plain text from MySQL as the password hash is used for authentication, but you can compare hash strings with “PASSWORD” function:
We can see that PASSWORD(‘forgotten’) hash does not match the authentication_string column, which means password string=’forgotten’ is not the correct password to log in. Also, in case the user has multiple hosts (with different password), he may be trying to connect using the password for the wrong host.
In case you need to override the password you can execute the following query:
5) Special characters in the password being converted by Bash:
Fix: Prevent bash from interpreting special characters by wrapping password in single quotes:
6) SSL is required but the client is not using it:
Fix: Adding –ssl-mode flag (–ssl flag is deprecated but can be used too)
You can read more in-depth on how to configure SSL in MySQL in the blog post about “Setting up MySQL SSL and Secure Connections” and “SSL in 5.6 and 5.7“.
7) PAM backend not working:
Fix: Double check user/password is correct for the user to authenticate with the PAM currently being used.
In my example, I am using Linux shadow files for authentication. In order to check if the user exists:
To reset password:
Finally, if you are genuinely locked out and need to circumvent the authentication mechanisms in order to regain access to the database, here are a few simple steps to do so:
Источник
When loading mysql, it always goes wrong when it is finally started. The error content is as follows:
Is the final Apply security setting
prompt:
The security settings could not be applied to the database because the connection has failed with the following error.
Error Nr. 1045
Access denied for user ‘root’@’localhost’ (using password: YES)
If a personal firewall is running on your machine, please make sure you have opened the TCP port 3306 for connections. Otherwise no client application can connect to the server. After you have opened the port please press [Retry] to apply the security settings.
If you are re-installing after you just uninstalled the MySQL server please note that the data directory was not removed automatically. Therefore the old password from your last installation is still needed to connect to the server. In this case please select skip now and re-run the Configuration Wizard from the start menu.
Solution:
1, uninstall MySQL
2, delete the directory C: / Documents and Settings / All Users / Application Data / MySQL
3, re-install MySQL just fine
How are you C:There is no Application Data folder under /Documents and Settings/All Users, select: Tools — Folder Options — View — Select to display all files and folders
Mysql database uninstall is not complete, configuration error solution
The security settings could not be applied to the database because the connection has failed with the following error.
Error Nr. 2003
Can’t connect to MySQL server on ‘localhost’ (10061)
If a personal firewall is running on your machine, please make sure you have opened the TCP port 3306 for connections. Otherwise no client application can connect to the server. After you have opened the port please press [Retry] to apply the security settings.
If you are re-installing after you just uninstalled the MySQL server please note that the data directory was not removed automatically. Therefore the old password from your last installation is still needed to connect to the server. In this case please select skip now and re-run the Configuration Wizard from the start menu.
*****************************************************************************************
The security settings could not be applied to the database because the connection has failed with the following error.
Error Nr. 1045
Access denied for user ‘root’@’localhost’ (using password: YES)
If a personal firewall is running on your machine, please make sure you have opened the TCP port 3306 for connections. Otherwise no client application can connect to the server. After you have opened the port please press [Retry] to apply the security settings.
If you are re-installing after you just uninstalled the MySQL server please note that the data directory was not removed automatically. Therefore the old password from your last installation is still needed to connect to the server. In this case please select skip now and re-run the Configuration Wizard from the start menu.
Solution for apply security setting error during MySQL 5.1 installation
1, uninstall MySQL
2, delete the directory C: / Documents and Settings / All Users / Application Data / MySQL
3, re-install MySQL, OK.
——————————————
[MySQL] Could not start the service MySQL solution
Install mysql 5.1.33, the third Start Service in the Execute configurattion step when running the Server Instance Configuration wizard goes wrong, the error message is Could not start the service MySQL (this is usually because mysql is installed, uninstall is not Clean caused. After uninstalling and restarting and then reinstalling. Pay attention to the service, if you can not uninstall, you can use mysqld-nt-remove to uninstall).
The specific method is as follows:
Check if there is mysql in the service, if there is any service to stop it;
Run Add and Remove Programs in the Control Panel to uninstall mysql.
Open the registry after uninstalling, check the key value under HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services, if there is related mysql key value (mysql, mysqladmin), delete it;
Restart, delete the mysql installation residual directory (view the service, there is no mysql in the service);
Reinstall mysql. Do not run the Server Instance Configuration wizard after installation. After restarting, run the wizard in the Start menu.
PS: A method worthy of reference
———————————————
Msyql install to the last step start service error solution
1, to the control panel first delete mysql.
2. Go to the c:C:/Program Files directory and delete the mysql directory.
3. If there are still setting directories in other disks, delete them. Empty directories should also be deleted.
4. Go to regedit to put the registry
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Applications/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Applications/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Applications/MySQL
If you have any, delete it all!
(Tips: Find «mysql» with F3 loop)
5. If the mysql content in the task manager is also deleted
6, shut down the firewall
7, reinstall mysql (I did not restart the computer here)
When reloading it is necessary, restart the computer, disable IIS, and delete temporary files in temp.
If it is not possible, when configuring mysql, change the mysql service to a service name.
******************************************************************************************
—————————
An error occurred while deleting the item.
—————————
Unable to delete LEGACY_MYSQL51: An error occurred while deleting the item.
—————————
Determine
—————————
Solution: right click in the registry key to increase all permissions of administrators
I’m installing MySQL 5.6 on Windows 8. I’m doing a completely generic install—I accept all defaults. Yet I get this error:
Beginning configuration step: Applying security settings
Attempting to update security settings.
Authentication to host 'localhost' for user 'root' using method 'mysql_native_password' failed with message:
Access denied for user 'root'@'localhost' (using password: NO)
Ended configuration step: Applying security settings
This happens when running the MSI file found right on the MySQL download site.
I am an Administrator on the machine.
What am I missing?
asked Aug 21, 2015 at 2:19
Review your installation settings; if you selected the default to have a root password (always a good idea) then make sure you have supplied one. Don’t just leave it blank.
answered Aug 21, 2015 at 9:06
![]()
I have uninstalled and reinstalled MySQL 5.6 on Windows 8 several times, and it always holds onto the last configured root password. That is, a reinstall will ask you for the root password, and from my experience this is always the last configured root password of previous installations.
Why MySQL does this is not clear to me, given that as an administrator I can delete everything on the file system. If you manage to get rid of the previous configuration (reformat the HD, for example) MySQL will ask you to set a root password. Using a blank password seems to generate intermittent errors when upgrading or reinstalling.
I prefer installing MySQL on a Linux system because the package manager will usually help you out or you can install the server package without Oracle’s installer.
answered Aug 2, 2016 at 17:01
![]()
The problem is that MySQL saves its configuration data in a different location and that includes your old root password. If you’re going to re-install MySQL you have to first delete this old configuration data which can be found in:
C:ProgramDataMySQL
You may have to tell windows to show hidden files and folders because this folder is hidden by default.
answered Aug 27, 2021 at 21:00
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 2010-02-18 16:34:20
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Тема: Проблема при настройке mysql
При настройке, установив пароль, в окне processing configuration…, не выполняется пункт — Apply security settings. Я удалял мускл по-новому ставил, и так раз 5, потом решил попробовать как оно будет работать.
Запустил скрипт:
<?php
echo «php работает»;
$link=mysql_connect(«localhost»,»root»,»slagiotore»);
?>
Выдало:php работает
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@’localhost’ (using password: YES) in C:apachelocalhostwwwindex.php on line 11
При запуске phpmyadmin выдаёт вот такое:
Добро пожаловать в phpMyAdmin
Ошибка
Ответ MySQL: Документация
#1045 — Access denied for user ‘root’@’localhost’ (using password: YES)
phpMyAdmin не смог установить соединение с сервером MySQL. Проверьте хост, имя пользователя и пароль установленные в конфигурационном файле config.inc.php и удостоверьтесь, что они соответствуют данным полученным от администратора сервера MySQL.
Помогите пожалуйста новичку.
2 Ответ от Hanut 2010-02-18 17:17:52

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,724
Re: Проблема при настройке mysql
mkostil
Обычно выдает ошибку в пункте Apply security settings, если брандмауэр блокирует порт MySQL (3306).
Попробуйте установить MySQL отключившись от Интернет и выключив брандмауэр. Разумеется, в правилах брандмауэра надо разрешить процессу MySQL принятие соединений на порту 3306.
3 Ответ от mkostil 2010-02-20 02:57:39
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Re: Проблема при настройке mysql
Hanut
Пробовал отключаться от интернета, брандмауэр выключен, в исключениях добавил порт 3306, но результата нет. Подскажи пожалуйста ещё чего-нибудь, заранее спасибо
4 Ответ от Hanut 2010-02-20 11:57:33

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,724
Re: Проблема при настройке mysql
mkostil
Пробуйте запустить сервис MySQL из Control Panel -> Administrative Tools -> Services. Если не запустится, смотрите ошибки в журнале операционной системы или в журнале ошибок MySQL.
5 Ответ от mkostil 2010-02-20 12:57:26
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Re: Проблема при настройке mysql
Hanut
Дело в том что, служба мускл запускается и останавливается, не только с панели управления но и с помощью созданных ярлыков. Но при попытке подключения к БД, как я писал в первом сообщении, не получается.
6 Ответ от mkostil 2010-02-20 13:13:40
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Re: Проблема при настройке mysql
Hanut
При первой установке mysql, не исключаю, что мог натупить с паролями, читал что может самая первая БД не удаляться и из-за этого такая петрушка. Если это действительно так, то как мне её найти и удалить. Я удаляю мускл с панели управления + с програм файлс папку мускл.
7 Ответ от Hanut 2010-02-20 20:26:50

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,724
Re: Проблема при настройке mysql
Попробуйте зайти в MySQL из командной строки (cmd).
mysql -uroot -ppassword
Вместо password введите пароль пользователя root (ключ -p и последующий пароль должны быть вплотную, как написано).
Если захотите переустановить MySQL, то удалить надо так же каталог data, который находится здесь: C:Documents and SettingsAll UsersApplication DataMySQLMySQL Server 5.1data
8 Ответ от pau4ok 2010-02-21 15:06:55
- pau4ok
- Редкий гость
- Неактивен
- Откуда: г. Одесса
- Зарегистрирован: 2010-02-21
- Сообщений: 2
Re: Проблема при настройке mysql
У меня точно такая жа проблема, переустановил маскл но всеравно пишет, что не открыт порт. Возможно проблема в том что у меня роутер, но в его настройках я открыл порт 3306. Если через командную строку заходить то выбивает тот же эрор:
#1045 — Access denied for user ‘root’@’localhost’ (using password: YES)
9 Ответ от Hanut 2010-02-21 16:30:12

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,724
Re: Проблема при настройке mysql
pau4ok сказал:
#1045 — Access denied for user ‘root’@’localhost’ (using password: YES)
Это означает, что MySQL работает, но пароль не принимается.
10 Ответ от pau4ok 2010-02-21 16:35:43
- pau4ok
- Редкий гость
- Неактивен
- Откуда: г. Одесса
- Зарегистрирован: 2010-02-21
- Сообщений: 2
Re: Проблема при настройке mysql
Ммм и что делать?)
11 Ответ от Hanut 2010-02-21 17:20:06

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,724
Re: Проблема при настройке mysql
pau4ok
Попробуйте переустановить MySQL удалив сперва каталог data.
12 Ответ от mkostil 2010-02-21 17:28:10
- mkostil
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-02-18
- Сообщений: 5
Re: Проблема при настройке mysql
Hanut
ОГРОМНЕЙШЕЕ СПАСИБО!!!!!!!!!!!!!!!
Переустановил я мускл, а перед этим удалил каталог, правда не data а MySql в которой находиться data, я думаю разницы нет, и все прошло как по маслу. Только если кто-то столкнётся с этой проблемой, перегрузите комп, а то я сразу обрадовался конфигурация прошла успешно, а не тестовый скрипт не хотел работать, на phpmyadmin зашёл за 3 разом, а после перезагрузки всё работает. Hanut ещё раз тебе спасибо.
13 Ответ от Skolzkiy 2011-04-11 19:45:44
- Skolzkiy
- Редкий гость
- Неактивен
- Зарегистрирован: 2011-04-11
- Сообщений: 3
Re: Проблема при настройке mysql
Народ..выручайте)
У меня тоже возникает проблема на этом месте….но с другой ошибкой
The securite setting could not be applied to the database the conection has faild with the following error.
Error Nr. 2003
Can’t connect to MySQL server on ‘localhost'(10061)
И там ещё много чего…)
Кто может сказать в чём проблема..я уже переустанавливал программу 10 раз…перезагружал, порт открывал…но толку 0…а вот как указано с папкой data, дак её я не нашёл вообще….искал в корне где установлена программа, но там были только….bin, lib, share….и ещё разные файлы…версия программы 5.1ююю
Заранее спасибки;)
14 Ответ от DiapaZon 2011-04-11 20:36:04
- DiapaZon
- Редкий гость
- Неактивен
- Зарегистрирован: 2011-04-11
- Сообщений: 2
Re: Проблема при настройке mysql
Подскажите пожалуйста как мне изменить сохранения БД из C:Documents and SettingsAll UsersApplication DataMySQL Server 5.1data в CMySQL5data Заранее спасибо) ![]()
15 Ответ от Hanut 2011-04-11 21:59:36

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,724
Re: Проблема при настройке mysql
Skolzkiy сказал:
с папкой data, дак её я не нашёл вообще
Ищите где-то здесь.
C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/
16 Ответ от Hanut 2011-04-11 22:00:46

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,724
Re: Проблема при настройке mysql
DiapaZon сказал:
Подскажите пожалуйста как мне изменить сохранения БД из C:Documents and SettingsAll UsersApplication DataMySQL Server 5.1data в CMySQL5data Заранее спасибо)
В my.ini директива datadir.
17 Ответ от Skolzkiy 2011-04-11 22:12:27
- Skolzkiy
- Редкий гость
- Неактивен
- Зарегистрирован: 2011-04-11
- Сообщений: 3
Re: Проблема при настройке mysql
Hanut сказал:
Ищите где-то здесь.
C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/
В том то и дело..я при установки путь не менял..и он по стандарту в C фигачил…установил 66 версию..папка дата появляется….но удаляю её..но толку от этого 0…(
ставлю заново мускл..но всё равно ошибку выдаёт…и я так понимаю, ругается он на порт((((
А да…и по чему то, после удаления… остается название серва…т.е. нельзя его больше создать…так как он уже существует…..я хз вообще чё делать…(
18 Ответ от Hanut 2011-04-11 23:31:34

- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,724
Re: Проблема при настройке mysql
Skolzkiy сказал:
и по чему то, после удаления… остается название серва
Это я не понял. Где остается? Если остается сервис MySQL, значит вы его не удалили.
19 Ответ от DmitryV 2011-04-12 10:45:13
- DmitryV
- Пенсионер
- Неактивен
- Откуда: Санкт-Петербург, Россия
- Зарегистрирован: 2010-07-31
- Сообщений: 558
Re: Проблема при настройке mysql
MySQL версию выше 5.5 не устанавливайте 6 это сырые беты.
20 Ответ от Skolzkiy 2011-04-12 10:52:15
- Skolzkiy
- Редкий гость
- Неактивен
- Зарегистрирован: 2011-04-11
- Сообщений: 3
Re: Проблема при настройке mysql
Hanut сказал:
Это я не понял. Где остается? Если остается сервис MySQL, значит вы его не удалили.
Ну при настройках там есть название типа сервиса…ну вот там и остаётся по чему то…хотя через панель программа ыла удалена…
DmitryV сказал:
MySQL версию выше 5.5 не устанавливайте 6 это сырые беты.
Спасибки…буду знать)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
During our work in support, we see this again and again: “I try to connect to MySQL and am getting a 1045 error”, and most times it comes accompanied with “…but I am sure my user and password are OK”. So we decided it was worth showing other reasons this error may occur.
MySQL 1045 error Access Denied triggers in the following cases:
1) Connecting to wrong host:
|
[engineer@percona]# mysql -u root -psekret mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) |
If not specifying the host to connect (with -h flag), MySQL client will try to connect to the localhost instance while you may be trying to connect to another host/port instance.
Fix: Double check if you are trying to connect to localhost, or be sure to specify host and port if it’s not localhost:
|
[engineer@percona]# mysql -u root -psekret -h <IP> -P 3306 |
2) User does not exist:
|
[engineer@percona]# mysql -u nonexistant -psekret -h localhost mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user ‘nonexistant’@‘localhost’ (using password: YES) |
Fix: Double check if the user exists:
|
mysql> SELECT User FROM mysql.user WHERE User=‘nonexistant’; Empty set (0.00 sec) |
If the user does not exist, create a new user:
|
mysql> CREATE USER ‘nonexistant’@‘localhost’ IDENTIFIED BY ‘sekret’; Query OK, 0 rows affected (0.00 sec) |
3) User exists but client host does not have permission to connect:
|
[engineer@percona]# mysql -u nonexistant -psekret mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user ‘nonexistant’@‘localhost’ (using password: YES) |
Fix: You can check to see which host user/host MySQL allows connections with the following query:
|
mysql> SELECT Host, User FROM mysql.user WHERE User=‘nonexistant’; +————-+————-+ | Host | User | +————-+————-+ | 192.168.0.1 | nonexistant | +————-+————-+ 1 row in set (0.00 sec) |
If you need to check from which IP the client is connecting, you can use the following Linux commands for server IP:
|
[engineer@percona]# ip address | grep inet | grep -v inet6 inet 127.0.0.1/8 scope host lo inet 192.168.0.20/24 brd 192.168.0.255 scope global dynamic wlp58s0 |
or for public IP:
|
[engineer@percona]# dig +short myip.opendns.com @resolver1.opendns.com 177.128.214.181 |
You can then create a user with correct Host (client IP), or with ‘%’ (wildcard) to match any possible IP:
|
mysql> CREATE USER ‘nonexistant’@‘%’ IDENTIFIED BY ‘sekret’; Query OK, 0 rows affected (0.00 sec) |
4) Password is wrong, or the user forgot his password:
|
[engineer@percona]# mysql -u nonexistant -pforgotten mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user ‘nonexistant’@‘localhost’ (using password: YES) |
Fix: Check and/or reset password:
You cannot read user passwords in plain text from MySQL as the password hash is used for authentication, but you can compare hash strings with “PASSWORD” function:
|
mysql> SELECT Host, User, authentication_string, PASSWORD(‘forgotten’) FROM mysql.user WHERE User=‘nonexistant’; +————-+————-+——————————————-+——————————————-+ | Host | User | authentication_string | PASSWORD(‘forgotten’) | +————-+————-+——————————————-+——————————————-+ | 192.168.0.1 | nonexistant | *AF9E01EA8519CE58E3739F4034EFD3D6B4CA6324 | *70F9DD10B4688C7F12E8ED6C26C6ABBD9D9C7A41 | | % | nonexistant | *AF9E01EA8519CE58E3739F4034EFD3D6B4CA6324 | *70F9DD10B4688C7F12E8ED6C26C6ABBD9D9C7A41 | +————-+————-+——————————————-+——————————————-+ 2 rows in set, 1 warning (0.00 sec) |
We can see that PASSWORD(‘forgotten’) hash does not match the authentication_string column, which means password string=’forgotten’ is not the correct password to log in. Also, in case the user has multiple hosts (with different password), he may be trying to connect using the password for the wrong host.
In case you need to override the password you can execute the following query:
|
mysql> set password for ‘nonexistant’@‘%’ = ‘hello$!world’; Empty set (0.00 sec) |
5) Special characters in the password being converted by Bash:
|
[engineer@percona]# mysql -u nonexistant -phello$!world mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user ‘nonexistant’@‘localhost’ (using password: YES) |
Fix: Prevent bash from interpreting special characters by wrapping password in single quotes:
|
[engineer@percona]# mysql -u nonexistant -p’hello$!world’ mysql: [Warning] Using a password on the command line interface can be insecure ... mysql> |
6) SSL is required but the client is not using it:
|
mysql> create user ‘ssluser’@‘%’ identified by ‘sekret’; Query OK, 0 rows affected (0.00 sec) mysql> alter user ‘ssluser’@‘%’ require ssl; Query OK, 0 rows affected (0.00 sec) ... [engineer@percona]# mysql -u ssluser -psekret mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user ‘ssluser’@‘localhost’ (using password: YES) |
Fix: Adding –ssl-mode flag (–ssl flag is deprecated but can be used too)
|
[engineer@percona]# mysql -u ssluser -psekret —ssl-mode=REQUIRED ... mysql> |
You can read more in-depth on how to configure SSL in MySQL in the blog post about “Setting up MySQL SSL and Secure Connections” and “SSL in 5.6 and 5.7“.
7) PAM backend not working:
|
mysql> CREATE USER ‘ap_user’@‘%’ IDENTIFIED WITH auth_pam; Query OK, 0 rows affected (0.00 sec) ... [engineer@percona]# mysql -u ap_user -pap_user_pass mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user ‘ap_user’@‘localhost’ (using password: YES) |
Fix: Double check user/password is correct for the user to authenticate with the PAM currently being used.
In my example, I am using Linux shadow files for authentication. In order to check if the user exists:
|
[engineer@percona]# cat /etc/passwd | grep ap_user ap_user:x:1000:1000::/home/ap_user:/bin/bash |
To reset password:
|
[engineer@percona]# sudo passwd ap_user Changing password for user ap_user. New password: |
Finally, if you are genuinely locked out and need to circumvent the authentication mechanisms in order to regain access to the database, here are a few simple steps to do so:
- Stop the instance
- Edit my.cnf and add skip-grant-tables under [mysqld] (this will allow access to MySQL without prompting for a password). On MySQL 8.0, skip-networking is automatically enabled (only allows access to MySQL from localhost), but for previous MySQL versions it’s suggested to also add –skip-networking under [mysqld]
- Start the instance
- Access with root user (mysql -uroot -hlocalhost);
-
Issue the necessary GRANT/CREATE USER/SET PASSWORD to correct the issue (likely setting a known root password will be the right thing: SET PASSWORD FOR ‘root’@’localhost’ = ‘S0vrySekr3t’). Using grant-skip-tables won’t read grants into memory and GRANT/CREATE/SET PASSWORD statements won’t work straight away. First, you need to execute “FLUSH PRIVILEGES;” before executing any GRANT/CREATE/SET PASSWORD statement, or you can modify mysql.users table with a query which modifies the password for User and Host like “UPDATE mysql.user SET authentication_string=PASSWORD(‘newpwd’) WHERE User=’root’ and Host=’localhost’;”
- Stop the instance
- Edit my.cnf and remove skip-grant-tables and skip-networking
- Start MySQL again
- You should be able to login with root from the localhost and do any other necessary corrective operations with root user.
Learn more about Percona Server for MySQL
Ошибка: Access denied for user ‘root’@’localhost’ (Using password: YES и NO)
При работе с системой MySQL могут возникнуть самые разные ошибки, и на этапе освоения программы разобраться с ними может быть сложно. Одна из наиболее распространенных проблем — ошибка 1045, которая сопровождается сообщением Access denied for user ‘root’@’localhost’ (Using password: YES и NO). Сегодня я расскажу, как ее исправить.
Понять суть проблемы можно, переведя сообщение об ошибке на русский язык. Означает оно, что пользователю с именем root на машине localhost запрещен доступ к БД при использовании пароля или без него.

Причины ошибки Access denied for user ‘root’@’localhost’
Чтобы свободно получить доступ в MySQL, должно совпасть три параметра, описывающих пользователя базы данных — имя, название машины и пароль. Если есть какие-то несовпадения, доступ будет запрещен. Самая простая причина проблемы — неправильный ввод пароля. Кроме этого, вызывать ошибку может неправильный синтаксис.
В системе MySQL нет простой зависимости имя пользователя – пароль, название хоста играет важную роль в получении доступа к БД. Оно может иметь вид IP-адреса, доменного имени, ключевого слова (например, localhost) или символа, объединяющего несколько машин в группу (например, % — любой хост, кроме локального).

Наиболее распространенные ошибки при обращении к БД:
- При присвоении прав новому пользователю не был указан адрес машины, с которой он может подключаться. В таком случае ему автоматически будет разрешено пользоваться БД с любого хоста, кроме локального, и при попытке подключения с localhost возникнет ошибка доступа.
- Неправильно расставленные кавычки. Если при создании пользователя написать ‘username@localhost’, это будет значить, что username@localhost может подключаться с любой машины, кроме локальной, а не что username может подключаться с компьютера localhost. Логин пользователя и имя машины должны иметь свою пару кавычек.
- Использование пароля при его отсутствии в базе данных.
В зависимости от того, при каком способе подключения к БД возникает ошибка Access denied for user ‘root’@’localhost’ (Using password: YES или NO), используются разные методы решения проблемы.
Если ошибка Access denied for user появляется с указанием Using password: YES, проблема заключается в неправильном вводе пароля. Проверить это можно, открыв таблицу mysql.user, в которой хранятся данные обо всех пользователях.

Порядок действий таков:
- Откройте таблицу пользователей.
- Проверьте, существует ли пользователь root с хостом localhost. Если он есть, смотрите на поле «password». Если там пусто, зайти в базу можно без ввода пароля. Если там что-то есть, значит, вы вводите неправильный пароль.
- Смените пароль командой SET PASSWORD.
- Если пользователя root нет, создайте его, установите пароль и предоставьте ему права.
После этого в базу данных можно зайти. Если изменить данные не получается, следует использовать параметр —skip-grant-tables, который отменяет все настройки разрешений.

Если ошибка появляется с ключом (Using password: NO), нужно сделать следующее изменить файл config.inc.php, указав в нем правильные данные. Если проблема возникает при установке MySQL, нужно удалить базы данных старой версии программы или сменить пароль для доступа к ним, используя режим —skip-grant-tables.
Таким образом, ошибка Access denied for user ‘root’@’localhost’ (Using password: YES или NO) возникает при несоответствии пароля и имени пользователя и легко исправляется заменой данных для входа.
Опубликовано 06.06.2017 Обновлено 28.04.2021
Стандарт / от Автора / 18.06.2022 / 2 комментария /
3 способа РЕШЕНИЯ по исправлению ошибки mysqli real connect (): (HY000/1045): Access denied for user ‘username’@’localhost’ на сервере Centos 7 и VestaCP
Ошибка mysqli real connect (): (HY000/1045): Access denied for user ‘username’@’localhost’ очень часто возникает при обновлении версии PHP на веб сервере или самой базы данных, особенно при использовании панели управления VestaCP.
Содержание:
Введение — ошибка mysql 1045
1 способ устранения ошибки mysql 1045
2 способ устранения ошибки mysql 1045
3 способ устранения ошибки mysql 1045
Заключение по устранению ошибки mysql 1045
Прежде чем приступить к устранению данной ошибки, необходимо понять ряд элементарных вещей в работе базы данных MySQL.
Итак:
При создании пользователя базы данных MySQL учитывается 3 параметра, а не два. Первый параметр это username, имя пользователя базы данных, второй параметр, это имя хоста, под именем хоста подразумевается разрешение входа в базу, или с определенного IP адреса, или с определенного домена, или с любой машины кроме локальной, или только с локальной машины. Под локальной машиной подразумевается Ваш сервер, где расположена сама база данных и панель phpmyadmin.
Поясняю:
- Пользователь например, root@localhost имеет имя root, свой пароль и право входить только с локальной машины, то есть с Вашего сервера через командную строку или панель управления.
- Пользователь например, root@’мой домашний ip’ имеет имя root, свой пароль и право входить только с домашнего компьютера.
- Пользователь например, root@’%’ имеет имя root, свой пароль и право входить с любого компьютера, кроме локального, то есть Вашей панели управления веб сервером.
Знак ‘%’ в одинарных кавычках указывает именно на право входить в базу с любого компьютера, кроме локальной машины.
Пользователей с именем root может быть два, три и более. Все эти пользователи будут иметь разные пароли и разные разрешения на вход с определенных хостов.

1 способ устранения ошибки mysql 1045
Ошибка 1045
ERROR 1045 (28000): Access denied for user ‘ root’@’localhost’ (using password: YES)
Самая распространенная и банальная ошибка это неправильная пара логина и пароля для входа в БД. Грубо говоря, Вы можете пытаться входить под пользователем root@’%’, вводя правильный никнейм и пароль через установленную на сервере панель phpmyadmin. Но данный пользователь имеет право заходить с любого компьютера, кроме локальной машины. А панель phpmyadmin как раз является локальной машиной. Таким образом Вы будите получать данную ошибку.
Решение:
Самое простое, это попробовать ввести другой пароль от указанного пользователя. Но пароль может быть задан автоматически (в частности root), может быть пустым или просто утерянным.
Вам необходимо войти в MySQL через терминал в командной строке. Лично я использую программу putty, как и 99% администраторов веб сервера. Для того, чтобы попасть в БД, необходимо предварительно отредактировать конфигурационный файл под названием my.cnf. В операционной системе Centos 7 он находится /etc/my.cnf. Скачайте данный файл с сервера и вставьте в него после такую строку: skip-grant-tables, должно получится примерно так:
[mysqld]
skip-grant-tables
другие параметры
Залейте файл с новыми параметрами на сервер, предварительно удалив старый, а лучше просто переименуйте старый файл. Перезапустите сервер БД через Вашу панель управления.
После редактирования выше указанного файла попасть в MySQL можно без пароля со всеми привилегиями.
Теперь откройте терминал и войдите под пользователем root без пароля, введя команду:
sudo mysql -u root
Далее введите команду:
Если все сделали правильно, то будет показано вот такое окно:
SELECT user,host,password FROM mysql.user;

Из таблицы видно, что пользователя root вообще НЕ существует, однако после правки выше указанного конфига, я без труда вошел под root и без пароля. Так же видно из таблицы, что присутствуют 2 пользователя — admin с паролями и доступом с локальной машины (непосредственно с сервера через панель phpmyadmin) и с любого домашнего компьютера через терминал.
Этих пользователей я создавал сам и пароли от них я знаю. Исходя из полученной информации, я могу без труда войти в панель phpmyadmin. И создать любого необходимого пользователя с любыми привилегиями (правами).
Пользователь root отсутствует по причине удаления. Я его просто удалил для написания данной статьи. У вас он скорей всего присутствует и таблица будет гораздо шире. Это просто мой тестовый сервер для экспериментов.
Давайте посмотрим еще один пример с другого сервера.

По root у Вас будет примерно такая же картина. То есть один root имеет право войти в панель phpmyadmin с паролем. Один root имеет право на вход через терминал без пароля и т. д. Пароли в БД хранятся в зашифрованном виде.
Получив данную информацию, Вы сможете разобраться с доступами, найти необходимый пароль и войти в панель phpmyadmin.
НО увы, так бывает НЕ всегда!
2 способ устранения ошибки mysql 1045
Как уже писалось в начале статьи данная ошибка возникает после обновления ПО на сервере. И зачастую в панель phpmyadmin просто НЕ попасть. Если из первого раздела Вам не удалось разобраться с пользователями и паролями, то проще всего создать нового пользователя с правами администратора и войти в панель.
Выполнить это можно через терминал. Войдите на сервер через терминал с правами администратора и проверьте есть ли доступ без пароля. Как правило на сервере создается один пользователь root со входом без пароля из терминала. Введите команду:
sudo mysql -u root
Если на сервер баз данных попасть не удалось, то отредактируйте файл (my.cnf), как рассказано в первом способе и повторите команду:
sudo mysql -u root
Теперь, когда в БД удалось попасть через терминал, необходимо создать нового пользователя с паролем и правами админа. Команда:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'ЗДЕСЬ ПАРОЛЬ';
Следующей командой предоставляются права администратора:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
После создания нового пользователя, как правило, можно под ним зайти в панель phpmyadmin. Это может быть совсем не обязательно пользователь root, а любой другой. Запомните имя пользователя и пароль, где то запишите себе. Лучше НЕ использовать root при создании нового пользователя.
Внимание!!! Не забудьте обратно отредактировать файл my.cnf, то есть удалить строку — skip-grant-tables.
3 способ устранения ошибки mysql 1045
Пожалуй, самый сложный способ, попытаюсь объяснить простым языком. Дело в том, что root пользователь создается по умолчанию. И если Вы начинаете играться с этим пользователем (root), то Вы нарушите пару логин — пароль. Так как пароль для этого пользователя создается и хранится в нескольких файлах на сервере.
Давайте поставим точку, рассмотрим все эти файлы и при необходимости зададим один пароль к данному юзеру.
Итак,
Файлов к счастью у нас не много, точнее три места которые необходимо проверить и поправить при необходимости.
-
Первое, открываем файл config.inc.php в Centos 7 находится /etc/phpmyadmin/config.inc.php В самый конец этого файла добавьте следующие строки кода:
/* User for advanced features */
$cfg['Servers'][$i]['controluser'] = ' root';
$cfg['Servers'][$i]['controlpass'] = 'ЗДЕСЬ ПАРОЛЬ';
- Второе, в файле /usr/local/vesta/conf/mysql.conf. Я использую панель управления VestaCP, если у Вас другая панель, то расположение файла будет отличатся. Откройте данный файл и посмотрите какой там указан пароль, если нужно, то смените на Ваш.
- Третье, это непосредственно сама панель управления phpmyadmin.
Во всех трех местах, должны быть одинаковые пароли от этого юзера. Если не так, то исправляйте. В VestaCP при неправильных паролях в этих файлах может отвалится бэкап.
Заключение по устранению ошибки mysql 1045
Ошибка mysqli real connect 1045, как правило появляется при неправильной паре имя — пароль или после обновления ПО на сервере. Устраняется путем проверки пользователей через терминал и создания новых пользователей. В случаи не корректного пароля от root редактируются необходимые файлы.
P. S.
Я отлавливал все 3 причины сбоя панели управления phpmyadmin и данную статью публикую больше для себя как памятку по устранению неполадок. Но надеюсь Вам она тоже поможет. Оставляйте комментарии по решению данной проблемы.
Думаю, что теперь Вам не страшна ошибка mysqli_connect(): (HY000/1045): Access denied for user ‘username’@’localhost’.
Учебные материалы
Понравился материал? Подписывайтесь на наш блог. И получите бесплатный конструктор лендингов!
Только полезная информация и реальные кейсы
Дата: 25.11.2013
Автор: Василий Лукьянчиков , vl (at) sqlinfo (dot) ru
Статистика форума SQLinfo показывает, что одной из наиболее популярных проблем является ошибка mysql №1045 (ошибка доступа).
Текст ошибки содержит имя пользователя, которому отказано в доступе, компьютер, с которого производилось подключение, а также ключевое слово YES или NO, которые показывают использовался ли при этом пароль или была попытка выполнить подключение с пустым паролем.
Типичные примеры:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES) — сервер MySQL
— сообщает, что была неудачная попытка подключения с локальной машины пользователя с именем root и
— не пустым паролем.
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO) — отказано в
— доступе с локальной машины пользователю с именем root при попытке подключения с пустым паролем.
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: NO) — отказано в
— доступе с локальной машины пользователю с именем ODBC при попытке подключения с пустым паролем.
Причина возникновения ошибки 1045
Как ни банально, но единственная причина это неправильная комбинация пользователя и пароля. Обратите внимание, речь идет о комбинации пользователь и пароль, а не имя пользователя и пароль. Это очень важный момент, так как в MySQL пользователь характеризуется двумя параметрами: именем и хостом, с которого он может обращаться. Синтаксически записывается как ‘имя пользователя’@’имя хоста’.
Таким образом, причина возникновения MySQL error 1045 — неправильная комбинация трех параметров: имени пользователя, хоста и пароля.
В качестве имени хоста могут выступать ip адреса, доменные имена, ключевые слова (например, localhost для обозначения локальной машины) и групповые символы (например, % для обозначения любого компьютера кроме локального). Подробный синтаксис смотрите в документации
Замечание: Важно понимать, что в базе не существует просто пользователя с заданным именем (например, root), а существует или пользователь с именем root, имеющий право подключаться с заданного хоста (например, root@localhost) или даже несколько разных пользователей с именем root (root@127.0.0.1, root@webew.ru, root@’мой домашний ip’ и т.д.) каждый со своим паролем и правами.
Примеры.
1) Если вы не указали в явном виде имя хоста
GRANT ALL ON publications.* TO ‘ODBC’ IDENTIFIED BY ‘newpass’;
то у вас будет создан пользователь ‘ODBC’@’%’ и при попытке подключения с локальной машины вы получите ошибку:
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: YES)
так как пользователя ‘ODBC’@’localhost’ у вас не существует.
2) Другой первопричиной ошибки mysql 1045 может быть неправильное использование кавычек.
CREATE USER ‘new_user@localhost’ IDENTIFIED BY ‘mypass’; — будет создан пользователь ‘new_user@localhost’@’%’
Правильно имя пользователя и хоста нужно заключать в кавычки отдельно, т.е. ‘имя пользователя’@’имя хоста’
3) Неочевидный вариант. IP адрес 127.0.0.1 в имени хоста соответствует ключевому слову localhost. С одной стороны, root@localhost и ‘root’@’127.0.0.1’ это синонимы, с другой, можно создать двух пользователей с разными паролями. И при подключении будет выбран тот, который распологается в таблице привелегий (mysql.user) раньше.
4) Аккаунт с пустым именем пользователя трактуется сервером MySQL как анонимный, т.е. позволяет подключаться пользователю с произвольным именем или без указания имени.
Например, вы создали пользователя »@localhost с пустым паролем, чтобы каждый мог подключиться к базе. Однако, если при подключении вы укажите пароль отличный от пустого, то получите ошибку 1045. Как говорилось ранее, нужно совпадение трех параметров: имени пользователя, хоста и пароля, а пароль в данном случае не совпадает с тем, что в базе.
Что делать?
Во-первых, нужно убедиться, что вы используете правильные имя пользователя и пароль. Для этого нужно подключиться к MySQL с правами администратора (если ошибка 1045 не дает такой возможности, то нужно перезапустить сервер MySQL в режиме —skip-grant-tables), посмотреть содержимое таблицы user служебной базы mysql, в которой хранится информация о пользователях, и при необходимости отредактировать её.
Пример.
SELECT user,host,password FROM mysql.user;
+—————+——————+——————————————-+
| user | host | password |
+—————+——————+——————————————-+
| root | house-f26710394 | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| aa | localhost | *196BDEDE2AE4F84CA44C47D54D78478C7E2BD7B7 |
| test | localhost | |
| new_user | % | |
| | % | *D7D6F58029EDE62070BA204436DE23AC54D8BD8A |
| new@localhost | % | *ADD102DFD6933E93BCAD95E311360EC45494AA6E |
| root | localhost | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+—————+——————+——————————————-+
Если изначально была ошибка:
-
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
значит вы указывали при подключении неверный пароль, так как пользователь root@localhost существует. Сам пароль храниться в зашифрованном виде и его нельзя узнать, можно лишь задать новый
SET PASSWORD FOR root@localhost=PASSWORD(‘новый пароль’);
-
ERROR 1045 (28000): Access denied for user ‘ODBC’@‘localhost’ (using password: YES)
в данном случае в таблице привилегий отсутствует пользователь ‘ODBC’@’localhost’. Его нужно создать, используя команды GRANT, CREATE USER и SET PASSWORD.
Экзотический пример. Устанавливаете новый пароль для root@localhost в режиме —skip-grant-tables, однако после перезагрузки сервера по прежнему возникает ошибка при подключении через консольный клиент:
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
Оказалось, что было установлено два сервера MySQL, настроенных на один порт.
phpmyadmin
При открытии в браузере phpmyadmin получаете сообщение:
Error
MySQL said:
#1045 — Access denied for user ‘root’@’localhost’ (using password: NO)
Connection for controluser as defined in your configuration failed.
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.
Ни логина, ни пароля вы не вводили, да и пхпадмин их нигде требовал, сразу выдавая сообщение об ошибке. Причина в том, что данные для авторизации берутся из конфигурационного файла config.inc.php Необходимо заменить в нем строчки
$cfg[‘Servers’][$i][‘user’] = ‘root’; // MySQL user
$cfg[‘Servers’][$i][‘password’] = »; // MySQL password (only needed
на
$cfg[‘Servers’][$i][‘user’] = ‘ЛОГИН’;
$cfg[‘Servers’][$i][‘password’] = ‘ПАРОЛЬ’
Установка новой версии
Устанавливаете новую версию MySQL, но в конце при завершении конфигурации выпадает ошибка:
ERROR Nr. 1045
Access denied for user ‘root’@‘localhost’ (using password: NO)
Это происходит потому, что ранее у вас стоял MySQL, который вы удалили без сноса самих баз. Если вы не помните старый пароль и вам нужны эти данные, то выполните установку новой версии без смены пароля, а потом смените пароль вручную через режим —skip-grant-tables.
P.S. Статья написана по материалам форума SQLinfo, т.е. в ней описаны не все потенциально возможные случаи возникновения ошибки mysql №1045, а только те, что обсуждались на форуме. Если ваш случай не рассмотрен в статье, то задавайте вопрос на форуме SQLinfo
Вам ответят, а статья будет расширена.
Дата публикации: 25.11.2013
© Все права на данную статью принадлежат порталу SQLInfo.ru. Перепечатка в интернет-изданиях разрешается только с указанием автора и прямой ссылки на оригинальную статью. Перепечатка в бумажных изданиях допускается только с разрешения редакции.
Are you looking for a solution to fix the MySQL ERROR 1045 (28000): Access denied for user ‘user’@’localhost’ (using password: YES) error message?
If you’re an experienced MySQL database manager, you may have come across some vague and confusing problems, like MySQL Error 1045 (28000) messages. Fortunately, while resolving this error can be confusing at first due to its many potential causes, its solutions tend to be relatively simple. Once you determine the reason behind the database error you’re seeing, you should be able to fix it fairly quickly.
In this post, we’ll cover the various possible causes of the MySQL Error 1045 (28000). Then we’ll share solutions for each common situation, to help you get your database and your site back up and running.
Why the MySQL Error 1045 (28000) Error Occurs
The MySQL Error 1045 (28000) is an authentication error. «MySQL ERROR 1045 (28000): Access denied for user ‘user’@’localhost’ (using password: YES)» typically indicates that MySQL cannot log you in using the username and password you’ve specified.
This usually occurs when you provide an incorrect username/password combination when making the database connection. However, there are many other different situations that can lead to this type of behaviour.
- Connecting to the wrong host or port
- Provided user does not exist
- User does exist but client host have insufficient permission to connect, or be IP banned
- Wrong password provided
- Bash converts special characters in the password to a different encoding
Wrong host or port
If you don’t specify the host to connect (with the -h flag), MySQL client will try to automatically connect to the localhost instance. You may be trying to connect to another host/port instance. In this case, simply add -h flag followed by the hostname you’re trying to connect to.
[[email protected]]# mysql -u root -psekret -h <IP_or_hostname>Code language: HTML, XML (xml)
Also, double check if you are trying to connect to the right port. MySQL, by default, listen on port 3306, but different setups use different ports for security purposes. Providing -P flag and a port number in the command is a great way to remind you of this detail.
[[email protected]]# mysql -u root -psekret -h <IP_or_hostname> -P 3306Code language: HTML, XML (xml)
Provided user does not exist
MySQL stores user data in a table called user in a database named mysql (by default). The following query will return 1 if a user with the specified username exists, 0 otherwise.
mysql> SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'username')
Query OK, 0 rows affected (0.00 sec)Code language: JavaScript (javascript)
If the user does not exist, you can create a new user:
mysql> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)Code language: JavaScript (javascript)
Client host have insufficient permission
By default, the MySQL server listens for connections only from localhost, which means it can be accessed only by applications running on the same host.
Remote root access is disabled by default. If you want to enable that, run this SQL command locally:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Code language: JavaScript (javascript)
And then find the following line and comment it out in your my.cnf file, which usually lives on /etc/mysql/my.cnf on Unix/OSX systems. In some cases the location for the file is /etc/mysql/mysql.conf.d/mysqld.cnf).
Alternatively, you can check to see which host user/host MySQL allows connections with the following query:
mysql> SELECT Host, User FROM mysql.user WHERE User='user01';
+-------------+-------------+
| Host | User |
+-------------+-------------+
| 192.168.0.1 | user01 |
+-------------+-------------+
1 row in set (0.00 sec)Code language: JavaScript (javascript)
Wrong password provided
This is by far the most common reason for MySQL ERROR 1045 (28000): Access denied for user ‘user’@’localhost’ (using password: YES).
MySQL lists user accounts in the user table of the mysql database. Each MySQL account can be assigned a password, although the user table does not store the cleartext version of the password, but a hash value computed from it.
You cannot read user passwords in plain text from MySQL as the password hash is used for authentication, but if you can get into MySQL command line interface (with root privileges), you can compare what you remember with the hashed value with “PASSWORD” function with the command below.
mysql> SELECT Host, User, authentication_string, PASSWORD('forgotten') FROM mysql.user WHERE User='nonexistant';
+-------------+-------------+-------------------------------------------+-------------------------------------------+
| Host | User | authentication_string | PASSWORD('forgotten') |
+-------------+-------------+-------------------------------------------+-------------------------------------------+
| 192.168.0.1 | nonexistant | *AF9E01EA8519CE58E3739F4034EFD3D6B4CA6324 | *70F9DD10B4688C7F12E8ED6C26C6ABBD9D9C7A41 |
| % | nonexistant | *AF9E01EA8519CE58E3739F4034EFD3D6B4CA6324 | *70F9DD10B4688C7F12E8ED6C26C6ABBD9D9C7A41 |
+-------------+-------------+-------------------------------------------+-------------------------------------------+
2 rows in set, 1 warning (0.00 sec)Code language: JavaScript (javascript)
From the output, we can clearly see that the hashed value for ‘forgotten’ does not match the authentication_string column, which means ‘forgotten’ is the wrong password.
Executing the following query will overwrite the current password with a new one :
mysql> set password for 'nonexistant'@'%' = 'helloworld';
Empty set (0.00 sec)Code language: PHP (php)
Special characters in the password
If you’re using Bash as your main shell, you should know that not all characters are treated equal in Bash. Some characters are evaluated by Bash to have a non-literal meaning. Instead, these characters carry out a special instruction, or have an alternate meaning; they are called «special characters», or «meta-characters».
In this case, your password contains some of the those special characters which might be mistakenly converted to another form by Bash. To prevent this from happening, wrap your password in single quotes in the command:
[[email protected]]# mysql -u user01 -p'hello$!*&^%$#@!'
mysql: [Warning] Using a password on the command line interface can be insecure
...
mysql>Code language: PHP (php)
Regain access to the database
If you’re locked out and need to bypass the authentication mechanisms to regain access to the database, here are simple steps to do so. Please note that we’re using MariaDB to demonstrate the steps.
- Stop the instance by running
sudo systemctl stop mariadb - Use
mysqld_safeto start mysqld server by running the command:mysqld_ safe –user=mysql –skip-grant-tables –skip-networking - Now you can open up a new terminal and access the MySQL server instance with
rootprivileges by runningmysql -u root -h localhost. - Please do note that since we’re running
grant-skip-tables, any GRANT/CREATE/SET PASSWORD statements won’t work straight away. In order to fix this, run FLUSH PRIVILEGES;. - Run
SET PASSWORD FOR 'root'@'localhost' = '[email protected]!'to change the password forrootuser. - Alternatively, you can modify
mysql.userstable with a query which modifies the password for User and Host like UPDATE mysql.user SET authentication_string=PASSWORD(‘newpwd’) WHERE User=’root’ and Host=’localhost’; - Stop the
mysqld_safeinstance and restart MySQL again fromsystemctl. - You should be able to login with
rootfrom the localhost with the new password and do any other necessary corrective operations with root user.
