将MySQL数据库移动到远程服务器

时间:2016-05-30 22:29:23

标签: php mysql phpmyadmin directadmin

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

该脚本之前在我的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。

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

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

1 个答案:

答案 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_stringhttp://php.net/manual/en/function.mysql-real-escape-string.php)。 您还可以查看PDO(http://php.net/manual/en/book.pdo.php),它通常比现已弃用的mysql_函数更受欢迎