访问我的数据库时遇到一些问题。
该脚本之前在我的localhost上运行。我将它导入另一台服务器,另一台服务器给我一个拒绝访问的消息。
给出的消息是: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。
我的脚本出了什么问题。我确信我使用的密码是正确的。
有人知道如何解决这个问题吗?
答案 0 :(得分:2)
MySQL权限基于他们连接的地址以及用户。因此root @ localhost和root@10.4.1.163将拥有两组独立的权限。如果您的代码和数据库位于同一服务器上,则将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';
在此处查看有关MySQL的GRANT的文档 - 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_
函数更受欢迎