从Cloud9 python应用程序无法连接到MySQL数据库(托管在arvixe)
我有一个MySQL数据库托管在“arvixe”(并由cPanel管理)。我可以通过我的PC上的“MySQL Workbech”连接到它,所以我建议我正确创建它。从Cloud9 python应用程序无法连接到MySQL数据库(托管在arvixe)
我在CLOUD9举办一个Python应用程序(如电报机器人),所以我用下面的代码连接到数据库:
import MySQLdb
# Open database connection
db = MySQLdb.connect("weongame.com","weonwii_ceux","<here my pass>","weonwii_Forms_Bot")
结果是,很长一段时间后(我supose那任何一种“超时”)时,控制台显示下一个回溯:
Traceback (most recent call last):
File "/home/ubuntu/workspace/bot.py", line 9, in <module>
db = MySQLdb.connect("weongame.com","weonwii_ceux","<here my pass>","weonwii_Forms_Bot")
File "/usr/local/lib/python3.4/dist-packages/MySQLdb/__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "/usr/local/lib/python3.4/dist-packages/MySQLdb/connections.py", line 204, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'weongame.com' (110)")
所以我把重点放在主要的错误:_mysql_exceptions.OperationalError:(2003,“无法连接到MySQL服务器上的“weongame。 com'(110)“)
我刚刚在cPanel上找到了“远程MySQL”部分。我不知道我必须在那里介绍的确切IP,所以我写了c9.io(作为主机名和IP地址),https://forms-bot-ceuxdruman.c9users.io(Cloud9说我的应用程序正在运行,尽管它是一个简单的脚本,而不是网页/网络应用程序)以及向我的Cloud9工作区的Ubuntu控制台询问的IP地址。但是在介绍所有这些知识之后(考虑IP可能是动态的),结果完全一样。
我也知道arvixe允许这种外部连接,所以这不是一个可能的原因。
任何可能导致错误的想法?提前致谢。
编辑:我用
import socket
socket.gethostbyname(socket.gethostname())
找出正在运行我的机器人真正的IP,然后我把它变成了“远程MySQL”部分为别人,但结果却是,再次, 一模一样。
- 远程主机的IP地址。如果你写的主机名,该主机名必须解析为IP和MySQL必须配置为解析主机名(也有不同的方法来配置MySQL)
hostname -f
host c9.io
- 验证远程服务器上3306端口是远程机器的开启或IP
iptables -L -n |grep 3306
iptables -L -n |grep IP_remote_machine
- 如果有开放防火墙或没有防火墙,在mysql上搜索问题。MySQL服务器上mysql的朗姆酒控制台(在某些circunstantes交友工具上交友远程访问帐户的接口出现故障)
以下try代码(这取决于你的mysql服务器的mysql -u根 - P的配置可能需要凭据)
[email protected]:~# mysql
MariaDB [(none)]> SELECT user, host, password FROM mysql.user WHERE user LIKE 'user_with_permission';
+----------------+--------------------+-------------------------------------------+
| user | host | password |
+----------------+--------------------+-------------------------------------------+
| user_perm_remo | XXX.31.31.227 | *3ED850F72DSHWBDS195D51D6A18EEFE0149DDA3F |
| user_perm_remo | XX.45.170.221 | *3ED850F72DSHWBDS195D51D6A18EEFE0149DDA3F |
| user_perm_remo | localhost | *3ED850F72DSHWBDS195D51D6A18EEFE0149DDA3F |
| user_perm_remo | XX.184.17.102 | *3ED850F72DSHWBDS195D51D6A18EEFE0149DDA3F |
| user_perm_remo | kvm401.xxxxxxx.com | *3ED850F72DSHWBDS195D51D6A18EEFE0149DDA3F |
| user_perm_remo | xxxxxxx.com | *3ED850F72DSHWBDS195D51D6A18EEFE0149DDA3F |
| user_perm_remo | %.xxxxxxx.com | *3ED850F72DSHWBDS195D51D6A18EEFE0149DDA3F |
| user_perm_remo | xxx.33.112.218 | *3ED850F72DSHWBDS195D51D6A18EEFE0149DDA3F |
+----------------+--------------------+-------------------------------------------+
8 rows in set (0.00 sec)
若不是你远程连接一对用户/主机/密码,你得到你的MySQL服务器上的错误权限。您需要手动添加用户。
GRANT ALL PRIVILEGES ON DATABASESNAME TO 'USERNAME'@'HOSTNAME_FDQN_OR_IP' IDENTIFIED BY 'PASSWORD'; FLUSH PRIVILEGES;
如果以后这工作没有连接(这也是前最佳实践),你必须检查:
-
测试你的防火墙和MySQL设置关闭从您的机器
的telnet远程conecctions mysql_server 3306
你的mysql日志。阅读你的my.conf以知道mysql错误日志(通常位于/var/lib/mysql/.err)和读取错误。如果错误是为了解决mysql问题,它就在这里。
注意:如果您的主机有一个动态的IP必须使用%,持续到动态IP授予远程访问。您可以使用%。%。%。%并调整为只允许您的远程计算机的可能Ip块。