连接到外部远程数据库

时间:2014-02-07 15:59:04

标签: php codeigniter amazon-web-services

我的网站位于亚马逊AWS的远程主机中, 我正在尝试连接到GoDaDDy主机中的另一个数据库。  2个网站共享相同的数据库。

我遇到错误:发生数据库错误。无法使用提供的设置连接到数据库服务器。

在亚马逊的

我在config文件夹中的database.php中有这个:

   $active_group = 'default';
   $active_record = TRUE;
   $db['default']['hostname'] = '192.186.236.98';
   $db['default']['username'] = 'username';
   $db['default']['password'] = 'mydbpwd';
   $db['default']['database'] = 'mydbname';
   $db['default']['dbdriver'] = 'mysql';
   $db['default']['dbprefix'] = '';
   $db['default']['pconnect'] = TRUE;
   $db['default']['db_debug'] = TRUE;
   $db['default']['cache_on'] = FALSE;
   $db['default']['cachedir'] = '';
   $db['default']['char_set'] = 'utf8';
   $db['default']['dbcollat'] = 'utf8_general_ci';
   $db['default']['swap_pre'] = '';
   $db['default']['autoinit'] = TRUE;
   $db['default']['stricton'] = FALSE;

欢迎任何帮助, 麦克

3 个答案:

答案 0 :(得分:1)

确保Godaddy服务器允许访问所需的端口。截至目前,端口3306未在此服务器上打开,因此数据库连接将失败。

Nmap scan report for ip-192-186-236-98.ip.secureserver.net (192.186.236.98)
Host is up (0.049s latency).
PORT     STATE  SERVICE
3306/tcp closed mysql

Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds

同时添加

$db['default']['port'] = 3306;

到db配置。


更新

由于您已打开端口

root# nc -z -w1 192.186.236.98 3306
Connection to 192.186.236.98 port 3306 [tcp/mysql] succeeded!

仍然无法连接意味着您设置了错误的用户名/密码或数据库名称。如果可以,请检查服务器上的mysql日志。

答案 1 :(得分:0)

确保您要连接的服务器在防火墙中打开端口3306(或运行MySQL的任何端口,默认情况下为3306),并且允许您使用的用户创建远程连接。

为了更安全,您可以要求GoDaddy仅允许从您的Amazon IP地址/范围到您的数据库的外部连接。

答案 2 :(得分:0)

如果您尝试通过SSL连接,则mysql或mysqli数据库连接可能会因某些旧版本的PHP和/或CI而失败。 对于版本至少为PHP> = 5.3.3和CI> = 2.1.3的新版mysqli和PDO接口,我没有任何SSL问题,但我不知道是否可以通过SSL可靠地使用较旧的mysql接口