php - SQLSTATE[HY000] [2002] 访问远程数据库时连接超时,日志显示已尝试连接

标签 php mysql

我目前正在编写一个 Web 服务,它将接收 POST 请求并将数据写入托管在不同服务器上的数据库。当对同一服务器上的数据库运行脚本时,它的行为符合预期。但是,一旦它尝试访问远程数据库,连接就会超时并出现该错误。

我读过很多关于配置 MySQL 以允许远程根连接的答案,但我们已经创建了一个具有任何主机的所有权限的用户。

MySQL 数据库的服务器日志显示,我们创建的用户尝试访问数据库,但没有使用密码,即使已编程输入密码。我目前无法访问核心 MySQL 文件。

即使服务器日志显示尝试连接到数据库,这仍然是根远程访问或防火墙的问题吗?

这是抛出错误的 PHP 函数:

function webservice_db_connect() {
    try {
        global $db_servername, $db_username, $db_password, $db_name, $db_port;
        $db = new PDO("mysql:host=$db_servername;dbname=$db_name;port=$db_port", $db_username, $db_password);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $db;
    } catch(PDOException $error) {
        exit('Connection failed: '. $error->getMessage());
    }
}

最终结果:

Connection failed: SQLSTATE[HY000] [2002] Connection timed out 

最佳答案

我首先尝试从 mysql 客户端登录远程 mySQL 服务器:

mysql -h your.remoteserver.com -p 3345 -u yourusername -p yourpassword

尝试不同的用户名以获得成功的连接。

您是否重新加载了远程 mySQL 数据库的权限?

关于php - SQLSTATE[HY000] [2002] 访问远程数据库时连接超时,日志显示已尝试连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51847772/

相关文章:

javascript - 在 php foreach 中设置 jQuery less/more 按钮

php - 如何使用 Laravel 发送电子邮件?

mysql - excel vba mysql ado连接

MySQL 列间搜索

python - 从 MySQL StoredProcedure 获取多个列表/数据

php - mysql查询获取特定日期之间用户的详细信息

mysql - 一对多仅返回一个结果

php - 在 Amazon 的 S3 上批量恢复以前的版本

php - 通过php将带撇号的字符串插入数据库

php - Facebook PHP SDK getUser() 方法即使在从 facebook 取消授权应用程序后也会返回 uid