连接到远程服务器上托管的MySQL数据库

时间:2014-02-18 10:00:30

标签: php mysql phpmyadmin

最近我购买了域名" domain.com"。托管公司有通常的CPanel来处理数据库。

使用" MySQL数据库"我:

  1. 创建了一个名为" database1"
  2. 的数据库
  3. 使用用户名" user1"创建了一个用户和密码" pass1"
  4. 添加了用户" user1"到数据库" database1"
  5. 到目前为止一切顺利。

    之后我点击PHPMyAdmin并重定向到PHPMyAdmin网页。在那里,我看到"数据库1"我以前创建的。单击该数据库,我使用IMPORT导入一个名为" test"的非常简单的表。 [列(id,name,surname)]。导入表创建的表" test"在数据库" database1"下面,这是正确的。

    之后我尝试使用下面的代码(connect_to_db.php)连接到该数据库:

    // Create connection
    $con=mysqli_connect("domain.com","user1","pass1","database1");
    
    // Check connection
    if (mysqli_connect_errno())
    {
    echo "Failed to connect to MySQL: " . mysqli_connect_error() ."<br>";
    }
    

    我已将connect_to_db.php上传到/home/domain/public_html/

    当我尝试连接到database1时,我收到以下错误:

    Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'user1'@'xxx.xxx.xxx.xxx' (using password: YES) in /home/karkoona/public_html/connect_to_db.php on line 13
    

    其中xxx.xxx.xxx.xxx是domain.com的公共IP(如果我做对了)。

    同样在PHPMyAdmin的登陆页右侧,我看到:

    user: domain@localhost
    

    知道为什么我无法使用当前用户访问数据库吗? 我的代码中有错误吗?

    感谢。

4 个答案:

答案 0 :(得分:1)

您需要使用它的IP授予对user1的访问权限以访问远程服务器:

GRANT ALL PRIVILEGES ON database1.* to 'user1'@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'pass1';

注意:将当前信息(例如xxx.xxx.xxx.xxx)的相关信息替换为将访问远程MySQL的当前服务器IP。


由于你正在使用cPanel,你可以这样做以允许IP:

  • 登录您的cPanel(如果尚未登录)。
  • 向下滚动到“数据库”部分。
  • 单击Remote MySQL图标。
  • 输入将进行远程连接的计算机的IP地址。
  • 单击“添加主机”按钮。

答案 1 :(得分:0)

可能是因为:

1) User name or password you are using is wrong
2) User may not have privillage to access the database

答案 2 :(得分:0)

您未通过连接检查中的$ con

 if (mysqli_connect_errno())

替换为

if (mysqli_connect_errno($con))

答案 3 :(得分:0)

您需要做的就是将服务器IP地址添加到cpanel中的远程数据库访问主机。它将允许访问您的数据库,并且使用相同的方法在您使用localhost时允许访问。但您所要做的就是将您的计算机IP地址添加到远程数据库中。