-1

我在访问我的数据库时遇到了一些问题。

该脚本之前在我的本地主机上工作过。我将它导入另一台服务器,另一台服务器给我一条拒绝访问的消息。

给出的消息是: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。

我的脚本有什么问题。我确信我使用的密码是正确的。

有人知道我该如何解决这个问题吗?

4

1 回答 1

2

MySQL 权限基于它们连接的地址以及用户。所以 root@localhost 和 root@10.4.1.163 将拥有两组独立的权限。如果您的代码和数据库位于同一台服务器上,则将 localhost 更改为 num8er 提到的 127.0.0.1 可能会起作用。

如果您可以通过终端访问您的 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_stringhttp://php.net/manual/en/function.mysql-real-escape-string.php)事先就可以了。您还可以查看 PDO ( http://php.net/manual/en/book.pdo.php ),它通常比现在不推荐使用的mysql_函数更受欢迎

于 2016-05-30T22:57:32.983 回答