Ошибка MySQL 1045 Access Denied

Доброе утро,

Я написал блок кода ниже на моем локальном ПК с Windows 7 и попытался запустить его. К сожалению, я получил:

Connect Error (1045) Access denied for user 'dbuser'@'myhost(using password: YES) 

Я предоставил dbuser Insert, Select, Update и Execute, используя как localhost, так и% для этой схемы базы данных. Я также могу mysql -u dbuser -p из командной строки на сервере.

Вот код:

 <?php /* Set Variables */ $host="serveripaddress"; $db="dbname"; $username="dbuser"; $pass="pass"; /* Attempt to connect */ $mysqli=new mysqli($host,$username,$pass,$db); if (mysqli_connect_error()){ die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); echo 'Success... ' . $mysqli->host_info . "\n"; $mysqli->close(); } ?> 

У меня возникли трудности с пониманием того, вызывает ли вышеуказанный блок кода мою ошибку, или есть ли что-то, что необходимо сделать на сервере. Может ли кто-нибудь предложить некоторые области расследования?

Спасибо, Сид

Убедитесь, что, если вы используете имя хоста для GRANT в MySQL, MySQL может правильно разрешить это имя хоста к IP-адресу, с которого вы подключаетесь.

Например, если вы это сделаете

 GRANT blah ON *.* to user@somehost 

вы должны помнить, что MySQL не увидит «somehost», он увидит IP-адрес. Он должен будет сделать обратный поиск, чтобы получить имя хоста, и если IP либо не имеет обратного сопоставления, либо отображает что-то совершенно другое, MySQL не даст доступа.

Если вы не можете гарантировать, что обратное сопоставление будет стабильным, лучше всего использовать IP-адреса для учетных записей удаленного доступа в MySQL.

 <?php /* Set Variables */ $host="127.0.0.1:3306"; $db="dbname"; $username="dbuser"; $pass="pass"; /* Attempt to connect */ $mysqli=new mysqli($host,$username,$pass,$db); if (mysqli_connect_error()){ die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } else { echo 'Success... ' . $mysqli->host_info . "\n"; $mysqli->close(); } ?> 

Прежде всего, добавьте эти фигурные скобки для инструкции if / else. Во-вторых, попробуйте hardcoding IP. Я просто запускал это с IP, установленным в переменную (did not work), а затем я жестко запрограммировал ее, работал отлично.