2016-04-25 44 views
0

我对从AWS到GCE的系统迁移中遇到的问题感到有点沮丧。无法通过php在GCE实例与MySQL连接到MySQL数据库

我有一个ec-2实例在亚马逊网络服务上运行,完美的工作和配置。

问题是,谷歌提供100000美元的信贷在Startup的特别计划中,我公司的首席执行官要求进行迁移,所以我就是这样。

我已经全部运行,几乎完全配置在一个ubuntu 14.04 LTS实例中,我几乎说了,因为我无法实现一个简单的任务,如连接到一个Mysql db :(我想我错过了一些东西在某个地方,我的心灵得到了破坏,所以我需要你的帮助。

首先,我只在远程服务器上有这个问题,我已经在本地测试了它几百次,当然还有aws,目前它在生产状态,所以我不知道是什么或者正是问题是

我GCE配置:

OS:Ubun TU 14.04 LTS HHD:30GB SSD的持久性磁盘 CPU:2倍 RAM:7.5 GB 区:欧洲west1-C 静态IP

所以,我安装灯和phpMyAdmin的,所有的作品就像一个魅力。我禁止从远程客户端访问Mysql数据库,配置php和apache模块。

Web应用程序是一个Rest API,基于PHP(Slim),就像我刚才所说的那样,现在正在使用AWS。

当我打电话给和不需要从数据库检索任何数据的端点时,它运行良好,当端点调用尝试访问数据库时,问题就出现了。在这种情况下,请求永远不会响应,它会一直加载直到我中止请求。这有点奇怪,因为我可以通过phpmyadmin来操作所有的数据,这些数据以与mysqli相同的方式访问数据库。

如果我检查了日志,它们上没有打印任何东西。只有当我更改“locahost”主机参数时,它会打印一条日志说:“XXX.XXX.XXX.XXX上没有MySQL数据库”(IP)。

config.php文件

define('DB_USERNAME', 'user'); 
define('DB_PASSWORD', 'pass'); 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'db_name'); 

DbConnect.php

function connect() { 
    include_once dirname(__FILE__) . '/Config.php'; 

    // Connecting to mysql database 
    $this->conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME); 

    // Check for database connection error 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    /* change character set to utf8 */ 
    if (!$this->conn->set_charset("utf8")) { 
     echo "Error loading character set utf8: " . $this->conn->error; 
    } 

    // returing connection resource 
    return $this->conn; 
} 

loops forever img

Expected Response img

欢迎任何帮助!

回答

0

您是否更改了my.cnf MySQL配置文件中的bind-address参数?这引起了我几次。默认情况下,Ubuntu 14.04中的MySQL只会监听本地主机并忽略远程连接。

此外,检查出了这个问题的答案,它可能给你一些很好的帮助:Remote Connections Mysql Ubuntu - bind address failed

+0

我忘了提及,但我也试着到IP绑定。结果是类似的:对于本地主机,它始终在等待从未到来的响应,并且如果我尝试通过my.cnf文件中的绑定IP访问,则结果相同,无限响应等待。如果我解除绑定ip,它会返回一个异常,“地址XXX.XXX中没有数据库.........”“无论如何;-) – SvOzMaS

+0

没有防火墙阻止连接到您的服务器吗?如ufw或iptables? https://help.ubuntu.com/12.04/serverguide/firewall.html – ironpilot