Ошибка «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/