Причины ошибки аутентификации MySQL: "Доступ запрещен для пользователя" xxx "@" yyy ""?
Какие возможные причины могут существовать для MySQL, выдавая ошибку “Access denied for user 'xxx'@'yyy'”
при попытке получить доступ к базе данных с помощью PHP-mysqli и нормально работает при использовании инструмента командной строки mysql с точно такими же именем пользователя, паролем, сокетом, базой данных и хостом?
Обновить:
На самом деле в mysql.user
таблица, каждая с другим хостом (но с тем же хешированным паролем), один был установлен на localhost, один на 127.0.0.1 и один на имя хоста машины. Удаление двух из них и изменение хоста третьего на "%" имело только один эффект: теперь доступ запрещен также с помощью инструмента командной строки. Я сделал
select user();
до этого в командной строке получалось то же самое xxx@yyy, что было отказано в php.
4 ответа
На случай, если кому-то все еще интересно: я никогда не решал эту конкретную проблему. Похоже, проблема была в том, с каким оборудованием я работал на MySQL. С тех пор я никогда не видел ничего подобного.
Иногда в php/mysql есть разница между localhost и 127.0.0.1
В mysql вы предоставляете доступ на основе имени хоста, для localusers это будет localhost. Я видел php, пытающийся соединиться с 'myservername' вместо localhost, хотя в конфигурации был определен 'localhost'.
Попробуйте предоставить доступ в mysql для 127.0.0.1 и подключиться в php через порт 12706.0.1 3306.
Сегодня у службы FTP моего провайдера веб-хостинга возникли некоторые проблемы, поэтому я решил создать локальный виртуальный веб-сервер для работы на моем сайте. Я установил EasyPHP 14.1 с phpMyAdmin и создал своего пользователя и свою базу данных с таблицами.
Первая попытка: неудача Я понял, что таблицы, которую я искал, не существует. -> Я решил создать отсутствующую таблицу.
Вторая попытка: неудача Я понял, что имя пользователя, которое я установил для моего нового пользователя, отличается от имени пользователя, которое я использовал для своего соединения. -> Я редактировал имя пользователя.
Третья попытка: неудача Я понял, что новое имя базы данных отличается от имени базы данных, которое я использую для подключения на своем сайте. -> Я редактировал имя БД.
Четвертая попытка: не удалась. Я понял, что между привилегиями моего нового пользователя не было "Гранта". Я даже не знаю, что означает "Грант", но давайте попробуем включить его -> Добавил привилегию "Грант".
Пятая попытка: я выиграл!
Я надеюсь, что мое маленькое приключение может кому-то помочь. знак равно
После прочтения вашего обновления я могу заподозрить ошибку в / с паролем. Используете ли вы "странные" символы в вашем PW (что может вызвать проблемы с кодировкой utf-8/iso)?
Использование% в поле Host позволит пользователю подключаться с любого хоста. Так что единственное, что может быть не так, это пароль.
Можете ли вы создать другого пользователя. с помощью что "предоставить все на всех для"... '@'% ', идентифицированного синтаксисом' somesimplepw '', и попытаться соединиться с этим пользователем? Не забудьте "очистить привилегии"
Для получения информации о том, как создать нового пользователя, нажмите здесь