& quot; доступ запрещен для пользователя & quot; после перемещения базы данных MySQL на удаленный сервер

У меня есть некоторые проблемы с доступом к моей базе данных.

Сценарий работал раньше на моем локальном хосте. Я импортировал его на другой сервер, и другой сервер выдает мне сообщение об отказе в доступе.

Сообщение, которое дается: Access denied for user 'root'@'10.4.1.163' (using password: YES)

Сценарий, который я использую:

<?php
// Connect to database server
mysql_connect("localhost", "root", "password") or die (mysql_error ());

// Select database
mysql_select_db("database") or die(mysql_error());

// SQL query
$strSQL = "SELECT * FROM users WHERE user_id='". $_SESSION['USER_ID'] ."'";

// Execute the query (the recordset $rs contains the result)
$rs = mysql_query($strSQL);

// Loop the recordset $rs
// Each row will be made into an array ($row) using mysql_fetch_array
while($row = mysql_fetch_array($rs)) {

// Write the value of the column FirstName (which is now in the array $row)
echo $row['Name'] . " ";
}

// Close the database connection
mysql_close();
?>

Я также попытался изменить localhost на IP-адрес 10.4.1.163.

Что не так с моим сценарием. Я уверен, что пароль, который я использую, правильный.

Кто-нибудь знает, как я могу это исправить?

-1

Решение

Разрешения MySQL основаны на адресе, к которому они подключаются, а также на пользователе. Таким образом, root @ localhost и [email protected] будут иметь два отдельных набора разрешений. Изменение localhost на 127.0.0.1, как упоминалось в num8er, вероятно, будет работать, если ваш код и база данных находятся на одном сервере.

Если у вас есть терминальный доступ к блоку, где находится ваш php, вы можете попробовать напрямую подключиться, исключив что-либо связанное с php, используя это:

mysql -h 10.4.1.163 -u root -p[pass] database -e "SHOW TABLES"

Обратите внимание, что между -p и пароль. В случае успеха вы получите список таблиц в database,

Чтобы предоставить доступ другим пользователям или другому имени хоста / IP-адресу, вы должны выполнить что-то вроде этого: (хотя вам действительно нужно создать отдельного пользователя с более ограниченными разрешениями в зависимости от ваших требований).

GRANT ALL PRIVILEGES ON `database`.* TO 'root'@'10.4.1.163';

Проверьте документы по GRANT MySQL здесь — http://dev.mysql.com/doc/refman/5.7/en/grant.html

На заметку — пожалуйста, пожалуйста, пожалуйста, не закачивайте старые данные в запрос, по крайней мере, не используя mysql_real_escape_string (http://php.net/manual/en/function.mysql-real-escape-string.phpНа это перед рукой.
Вы также можете посмотреть в PDO (http://php.net/manual/en/book.pdo.php) который обычно предпочтительнее, чем устаревший mysql_ функции

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]