MySQL Ошибка 1045 Доступ запрещен

Доброе утро,

Я написал блок кода ниже на моем локальном ПК с 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();

}
?>

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

Спасибо, Сид

1
задан OMG Ponies 20 August 2010 в 16:33
поделиться

2 ответа

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

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

GRANT blah ON *.* to user@somehost

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

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

1
ответ дан 2 September 2019 в 21:57
поделиться
<?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, установленным для переменной (не сработало), а затем я жестко запрограммировал его, работал нормально.

1
ответ дан 2 September 2019 в 21:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: