我有离线应用程序(安装在localhost中)但在线服务器中有数据库..因为我想制作类似同步器的东西......
我试图像我这样设置我的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
我怎么能解决这个问题?在此之前感谢...对不起我的坏英语
答案 0 :(得分:1)
我会在这里为那些在你的问题寻找解决方案时来到这里的人们提供答案。
完成后:
telnet 103.38.103.142 212
我看到侦听第212个端口的应用程序不是mysql rdbms。
这里是截图:http://joxi.ru/Vm6kkLCxn16Q2Z
我也看到了它的ubuntu。
如此迅速,我将逐步修复您的问题。
1)切换到root:
sudo su
2)编辑/etc/mysql/my.cnf
文件并确保它在mysqld部分下具有绑定(屏幕截图:http://joxi.ru/zANQQJhlqXn329):
bind-address = 0.0.0.0
3)重启你的mysql服务器:
service mysql restart
4)以mysql root用户身份进入终端的mysql控制台(截图:http://joxi.ru/a2X77bSyOM3Rmg):
mysql -u root -p
5)为您的数据库创建远程用户并刷新权限:
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' => '',
),
全部(:
P.S。使用.env
文件以避免每次更改数据库配置。截图:http://joxi.ru/ZrJEEJh17ROwAj
P.S。当然,这是出于开发目的。在生产中,最好能够监听具有更安全环境的具体网络接口(例如,在pptp0接口上进行pptp vpn连接和绑定)
对于数码洋爱好者:
在digitalocean我有水滴。
我确实有单独的数据库服务器,可以监听液滴之间的内部网络接口
和使用相同内部网络连接到它们的应用服务器。