我有离线应用程序(安装在本地主机上),但数据库在联机服务器中。因为我想做些类似同步器的东西..。
我试着把我的database.php设置成这样
'mysqlserver' => array(
'host' => '103.38.103.142',
'port' => '212',
'driver' => 'mysql',
'database' => 'lgspsb',
'username' => 'xxxxxxx',
'password' => 'xxxxxxx',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),但是像这样的错误。
SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading initial communication packet', system error: 0 我怎么解决不了这个问题?谢谢之前..。为我糟糕的英语感到抱歉
发布于 2016-06-21 23:13:01
我会在这里回答那些来这里寻求解决办法的人的问题。
做完后:
telnet 103.38.103.142 212我看到在212端口上监听的应用程序不是mysql。
这是截图:http://joxi.ru/Vm6kkLCxn16Q2Z
我也看到了它是乌本图。
那么快,我会一步一步地解决你的问题。
1)切换到根:
sudo su2)编辑/etc/mysql/my.cnf文件并确保它在mysqld部分(屏幕截图:http://joxi.ru/zANQQJhlqXn329)下有绑定:
bind-address = 0.0.0.03)重新启动mysql服务器:
service mysql restart4)以mysql用户的身份进入mysql控制台(屏幕截图:http://joxi.ru/a2X77bSyOM3Rmg):
mysql -u root -p5)为数据库创建远程用户并刷新权限:
GRANT ALL ON lgspsb.* TO 'lgspsb_remote'@'%' IDENTIFIED BY 'somehardpassword';
FLUSH PRIVILEGES;6)更改数据库连接参数:
'mysqlserver' => array(
'host' => '103.38.103.142',
'port' => '3306',
'driver' => 'mysql',
'database' => 'lgspsb',
'username' => 'lgspsb_remote',
'password' => 'somehardpassword',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),仅此而已(:
附注:使用.env文件避免每次更改数据库配置。截图:http://joxi.ru/ZrJEEJh17ROwAj
附注:当然,这是为了开发目的。在生产中,最好是监听具有更安全环境的具体网络接口(例如,拥有pptp0连接并绑定在pptp0接口的ip上)
对数字海洋爱好者而言:
在数字海洋里我有水滴。
我确实有单独的数据库服务器,可以监听液滴之间的内部网络接口。
以及使用同一个内部网络连接到它们的应用服务器。
https://stackoverflow.com/questions/37955560
复制相似问题