我有一个python应用程序,在其中,应用程序连接到一个远程数据库。
应用程序: flask+uwsgi+nginx .
数据库:mysql (远程)。应用程序公开从远程数据库为其提供数据的rest。
每天在数据库恢复之后,mysql服务都会在远程数据库中重新启动。我的应用程序与远程数据库之间的连接中断,并开始抛出错误消息。
MySQL server has gone away.
直到我在应用程序中手动重新启动uwsgi服务为止。
sudo service uwsgi restart
远程db中的mysql服务重新启动与我的系统中的uwsgi服务重新启动之间的持续时间是停机时。
我的应用程
我正在尝试连接到远程数据库。我确信远程数据库为我提供了所有的特权。但是当我尝试通过jdbc connection连接到远程mysql数据库时,我得到了这个错误。我的密码包含* and & symbol,我认为这是导致此error问题的原因。但我不知道如何escape those characters。请帮帮忙
java.sql.SQLException: Access denied for user 'myusername'@'myhost' (using password: YES)
"jdbc:mysql://myhost/mydb?use
当我尝试使用它的远程ip地址连接到本地mysql数据库时,我得到了一个访问被拒绝的消息。当我尝试从外部机器连接到相同的数据库时,它工作正常,没有任何问题。当我使用localhost连接到本地数据库时,它也能很好地工作。例如,如果数据库服务器的ip是1.2.3.4,那么我会得到以下结果:
# From the db server
mysql -u username -h localhost -p #works perfectly
mysql -u username -h 127.0.0.1 -p #works perfectly
mysql -u username -h 1.2.3.4 -p #
我有一个Rake任务来停止远程MySQL服务器,如下所示:
task :stop_mysql do
#SSH connect to the remote db server first
#how???
#then, run the following command
system 'sudo /etc/init.d/mysql stop'
end
正如您在上面看到的,现在数据库服务器是远程,我知道数据库服务器的IP地址。
如何以编程方式使ssh连接到数据库服务器,并在上面的rake任务中运行命令以停止MySQL?
P.S.
我正在尝试从GoDaddy VPS访问远程MySQL数据库。我已经在我的服务器上启用了远程访问,但我需要在GoDaddy的VPS上打开3306端口。他们的支持告诉我,我需要通过SSH来做这件事,但他们无法提供更多的帮助。我已经成功地通过SSH连接到我的服务器。我已经运行了以下命令:
telnet myserver.com 3306
当我运行该命令时,我得到以下消息:SHost is not allowed to connect to this MySQL serverConnection closed by foreign host。
如何打开端口以允许连接到远程MySQL数据库?