Sqlstate hy000 1045 access denied for user

Ошибка «mysqli_connect(): (HY000/1045): Access denied for user ‘username’@’localhost’» (РЕШЕНО)

При попытке выполнить вход phpMyAdmin или авторизоваться в MySQL вы можете столкнуться с ошибкой HY000/1045:

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

Давайте посмотрим на следующий код, который вызывает эту ошибку:

Увидели подвох? Устанавливается значение константы DB_USER, а используется для подключения DB_USERNAME, аналогично с DB_HOST и DB_SERVER. То есть в СУБД передаются неверные или пустые данные с которыми невозможно выполнить подключение.

Посмотрите на следующий код, который также вызовет ошибку:

В пароле содержится специальный символ $. В принципе, в пароле можно (и даже нужно) использовать специальные символы, но некоторые из них имеют специальное значение для языков программирования или для оболочки (если подключение выполняется в командной строке). Одинарная и двойная кавычки хотя и используются одинаково для обозначения строк чтобы символы в них перестали трактоваться как другие элементы языка, но они не являются идентичными. Одинарная кавычка делает так, что любые символы теряют своё специальное значение. А в строке, помещённой в двойные кавычки, некоторые специальные символы сохраняют своё значение. То есть «sdfasdf$B» интерпретатором PHP расценивается как буквальная строка «sdfasdf» за которой следует переменная $B.

Чтобы убедиться, что проблема в пароле содержащим специальные символы, вы можете временно установить пароль на не содержащий специальных символов примерно следующей командой:

В этом примере пароль установлен на «12345».

Создание нового пользователя при ошибке HY000/1045

Эта ошибка является вариантом рассмотренной ошибки — но разница в том, что необходимый пользователь действительно отсутствует и его нужно создать:

В данном случае это пользователь pma, но вы можете применять описанные команды для создания любых пользователей, заменяя в командах «pma» на нужное вам имя.

В терминале войдите в MySQL как root. Возможно, вы создали пароль root при первой установке MySQL или пароль может быть пустым, и в этом случае вы можете просто нажать ENTER, когда будет предложено ввести пароль.

Теперь добавьте нового пользователя MySQL с именем пользователя по вашему выбору. В этом примере мы называем его pma. Обязательно замените ЗДЕСЬ ПАРОЛЬ своим собственным. Символ % здесь указывает MySQL разрешить этому пользователю входить в систему из любого места удалённо (а не только с локального компьютера). Если вам нужна повышенная безопасность, вы можете заменить это IP-адресом.

Теперь мы предоставим нашему новому пользователю привилегию суперпользователя.

ОШИБКА!: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя ‘root’ @ ‘localhost’ (используется пароль: НЕТ)

Я прочитал много других вопросов, касающихся этой ошибки, но она не решает мою, поэтому я и задал этот вопрос, несмотря на очевидную мысль, что многие спрашивали об этом раньше меня.

Это мой connect.php

Но у меня возникли проблемы, я уверен, что $ user и $ pass верны, но я все еще продолжаю получать это сообщение, я новичок в PDO — может ли это иметь какое-либо отношение к этому?

Когда я загружаю это на свой локальный хост, я получаю сообщение об ошибке:

ОШИБКА!: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя
‘root’ @ ‘localhost’ (используя пароль: НЕТ)

Мне кажется, что это сообщение об ошибке говорит мне, что $pass = ‘NO’ что это не так или что $ pass не так? Я пытался изменить $pass = ‘NO’; и получил следующую ошибку:

ОШИБКА!: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя
‘root’ @ ‘localhost’ (используя пароль: ДА)

Тогда — играя глупо здесь я меняюсь $pass = ‘YES’ ;
достал мне эту ошибку:

ОШИБКА!: SQLSTATE [HY000] [1045] Доступ запрещен для пользователя
‘root’ @ ‘localhost’ (используя пароль: ДА)

Решение

Если вы используете wamp , это может быть возможным решением.

-> Изменить localhost в 127.0.0.1 ,
Так становится

Mysql 1045 access denied for user

При подключении к 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 ‘user@localhost’ IDENTIFIED BY ‘somepass’

Будет создан пользователь ‘user@localhost’@’%’

Анонимный (пустой) пользователь

Наличие “пустого” пользователя ”@’localhost’ или ”@’127.0.0.1′ – самая неочевидная причина проблемы. При подключении к БД, сервер в первую очередь проверяет пользователей с явно указанными IP-адресом или localhost-ом, проверяя по таблице mysql.user . То есть, система попробует подключить пользователя ‘user’@’localhost’ , проверяя пользователя ”@’localhost’ . В этом случае и появится ошибка 1045: Access denied for user. Лучшим решением проблемы будет удаление анонимного юзера:

Не забудьте указать свой хост

Пароль утерян

Если же ошибок нет и вы уверены, что имя пользователя верное, тогда единственное решение – смена пароля:

Подключение под суперпользователем, обновление таблицы mysql.user

Если же утерян пароль суперпользователя, то нужно выполнить следующее:

Установка нового root-пароля и обновление привилегий

Самое главное

Главная причина ошибки — несоответствие имени пользователя, хоста и пароля. Так что проверяйте учетные данные, отключайте анонимного пользователя и не используйте root для удаленного подключения.

Этот текст был написан несколько лет назад. С тех пор упомянутые здесь инструменты и софт могли получить обновления. Пожалуйста, проверяйте их актуальность.

Highload нужны авторы технических текстов. Вы наш человек, если разбираетесь в разработке, знаете языки программирования и умеете просто писать о сложном!
Откликнуться на вакансию можно здесь .

Что такое индексы в Mysql и как их использовать для оптимизации запросов

Примеры ad-hoc запросов и технологии для их исполнения

Основные понятия о шардинге и репликации

Настройка Master-Master репликации на MySQL за 6 шагов

Как создать и использовать составной индекс в Mysql

Check-unused-keys для определения неиспользуемых индексов в базе данных

Анализ медленных запросов (профилирование) в MySQL с помощью Percona Toolkit

Синтаксис и оптимизация Mysql LIMIT

Запрос для определения версии Mysql: SELECT version()

Типы и способы применения репликации на примере MySQL

Правильная настройка Mysql под нагрузки и не только. Обновлено.

Настройка Master-Slave репликации на MySQL за 6 простых шагов

Как исправить ошибку 405 Not Allowed в Nginx

Причины и методы исправления ошибки Gateway Timeout, Nginx

3 примера установки индексов в JOIN запросах

Быстрый подсчет уникальных значений за разные периоды времени

И как правильно работать с длительными соединениями в MySQL

Анализ медленных запросов с помощью EXPLAIN

Просмотр профиля запросов в Mysql

Правила выбора типов данных для максимальной производительности в Mysql

Как пофиксить ошибку «110: connection timed out» while reading response header from upstream

Описание, рекомендации и значение параметра query_cache_size

Как исправить ошибку Primary script unknown в Nginx


источники:

http://web-answers.ru/php/oshibka-sqlstate-hy000-1045-dostup-zapreshhen.html

http://highload.today/mysql+1045+access+denied+for+user/