Доброе утро,
Я написал блок кода ниже на моем локальном ПК с Windows 7 и попытался запустить его. К сожалению, я получил:
Connect Error (1045) Access denied for user 'dbuser'@'myhost(using password: YES)
Я предоставил dbuser Вставить, Выбрать, Обновить и Выполнить, используя для этой схемы базы данных как 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. Во-вторых, попробуйте жестко закодировать IP. Я просто запустил это с IP, установленным для переменной (не сработало), а затем я жестко запрограммировал его, работал нормально.