MySQL Ошибка 1045 Отказано в доступе
Доброе утро,
Я написал блок кода ниже на своем локальном ПК с 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();
}
?>
Я испытываю затруднения с пониманием, является ли приведенный выше блок кода причиной моей ошибки или что-то требуется сделать на сервере. Кто-нибудь может предложить некоторые области исследования?
Спасибо Сид
2 ответа
Убедитесь, что если вы используете имя хоста для 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-адресом, установленным на переменную (не работал), а затем жестко закодировал его, все работало нормально.