繁体   English   中英

PHP-无法连接到远程MySQL数据库

[英]PHP - can not connect to remote mysql database

我从我的VPS连接到另一台服务器上的mysql数据库时遇到问题,连接到localhost mysql可以正常工作。 这是我的PHP脚本:

<?php
$servername = "mysql.example.com";
$username = "username";
$password = "password";

try {
    $conn = new PDO("mysql:host=$servername;dbname=database", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully"; 
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }

我收到此错误: SQLSTATE[HY000] [1045] Access denied for user 'username'@'fh24-219.cybersales.cz' (using password: YES)

问题可能是主机从mysql.example.com更改为fh24-219.cybersales.cz (它指向我的VPS ip)。 我不知道为什么。 我已经将httpd_can_network_connect_dbhttpd_can_network_connect更改为1 我将不胜感激。 我可以使用phpmyadmin连接到mysql.example.com 谢谢。

您的$username可能没有权限从执行PHP脚本的服务器连接到数据库。

尝试创建具有从远程服务器连接权限的用户。 在MySQL服务器上执行:

CREATE USER 'testuser'@'fh24-219.cybersales.cz' IDENTIFIED BY 'mypass';

'fh24-219.cybersales.cz'更改为PHP服务器IP。 如果将'%'写为服务器IP,则可以从任何地方访问它(不建议)。

更新:

如果您不知道用户拥有什么权限,请执行SHOW GRANTS; 在例如PhpMyAdmin上查看是否提到了远程IP。

遇到相同的问题,请尝试从以下位置更改连接:

new PDO("mysql:host=$servername;dbname=database", $username, $password);

new PDO("mysql: host=$servername;dbname=database", $username, $password);

注意mysql:和主机之间的空间。 它对我有用,不能保证您不会在该帐户的@localhost版本上被拒绝访问(此时我被困住了),但是它删除了结尾位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM