连接到amazon服务器上的远程数据库

时间:2017-12-14 14:35:04

标签: php mysql laravel laravel-5 amazon-ec2

我正在使用Laravel5.4应用程序,它有自己的数据库。对于某些业务,我需要连接到亚马逊服务器上的另一个远程数据库来读取一些数据并插入一些数据,但所有尝试都失败了。我试过了:

.env.php:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db1
DB_USERNAME=root
DB_PASSWORD=root

DB_EXT_CONNECTION=mysql
DB_EXT_HOST=xx.xx.xx.xx
DB_EXT_PORT=3306
DB_EXT_DATABASE=db2
DB_EXT_USERNAME=root
DB_EXT_PASSWORD=root

配置/ database.php中:

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

    //External Database Credentials
    'ext_mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_EXT_HOST', '127.0.0.1'),
        'port' => env('DB_EXT_PORT', '3306'),
        'database' => env('DB_EXT_DATABASE', 'forge'),
        'username' => env('DB_EXT_USERNAME', 'forge'),
        'password' => env('DB_EXT_PASSWORD', ''),
        'unix_socket' => env('DB_EXT_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

我在我的控制器中尝试:

$users = DB::connection('ext_mysql')->table('users')->get();
return $users;

但是,浏览器上的连接花费的时间太长,最后给出了'Connection time out'

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您已在.env文件中定义外部数据库,前缀为DB_EXT_,并且您尝试在config / database.php文件中访问DB_SRD。

更改 config / database.php 文件

'ext_mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_EXT_HOST', '127.0.0.1'),
    'port' => env('DB_EXT_PORT', '3306'),
    'database' => env('DB_EXT_DATABASE', 'forge'),
    'username' => env('DB_EXT_USERNAME', 'forge'),
    'password' => env('DB_EXT_PASSWORD', ''),
    'unix_socket' => env('DB_EXT_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci',
    'prefix' => '',
    'strict' => true,
    'engine' => null,
]

同时检查您的远程数据库是否支持来自外部IP地址的连接。

答案 1 :(得分:0)

  

我需要连接到亚马逊服务器上的另一个远程数据库才能阅读   一些数据

如果您的数据库位于远程计算机中,则需要使用远程计算机的hostname或IP地址。

我不知道env方法,但我想,你需要改变

'host' => env('DB_EXT_HOST', '127.0.0.1'),

'host' => env('DB_EXT_HOST', 'xxx.xxx.xxx.xx'),

'xxx.xxx.xxx.xx'将是远程机器的IP地址。