我有一台Linux ubuntu服务器,我从DigitalOcean租用,用于通过python编码在MySQL中存储流实时数据。
问题是我不是在linux服务器环境中编码,而是在我的本地计算机python(个人Windows 10(不是服务器))中编码。所以在编码中,我需要连接到我的linux服务器,以便向/从linux MySQL服务器提供/获取数据。
我知道我需要在python中使用MySQLdb库来执行此操作。我试图通过在python中使用这个MySQLdb连接到我的linux服务器,但它无法连接到服务器。
另一个问题: 为了授予我连接到mysql服务器的其他ip地址,我应该在每次IP地址更改时执行此操作吗?例如,当我在家工作时,我需要授予我的家庭互联网IP,当我在其他地方工作时,我是否需要授予该IP地址?
无论如何,我尝试授予我连接到互联网的IP地址,但即使在授予后我也无法访问mysql服务器.4
我该怎么办?
这是我使用的代码;
import MySQLdb
conn = MySQLdb.connect("000.000.000.0", "root", "password", "name of database")
" 000.000.000.0"是我租用的服务器,它是一个Linux服务器。 "根"是我的服务器用户名 "密码"是服务器以及mysql的密码。 然后是我想要连接的数据库的名称。
c = conn.cursor()
c.execute("SELECT * FROM practice")
在这里,我只想看看"练习"中的内容。我在数据库中创建的表。
rows = c.fetchall()
for eachRow in rows:
print eachRow
我不知道出了什么问题。 对于Granting,我使用了以下代码:
GRANT ALL ON nwn.* TO new_username@'00.000.000.00' IDENTIFIED BY 'new_password';
ip地址00.000.000.000是星巴克的IP地址,我现在正在处理这个项目。我收到这样的消息:
Query OK, 0 rows affected, 1 warning (0.03 sec)
之后我尝试在我的本地窗口python上连接python。它没有工作并且得到了这个python错误:
OperationalError: (2003, "Can't connect to MySQL server on '000.000.000.0' (10061)")
这有什么问题?
答案 0 :(得分:-1)
类似的问题已被提出here。
mysql -u XXXX -h {IP} -p
您是否已在数据库中授予您的客户? Digital Ocean如何为此
为远程访问创建用户
GRANT SELECT,DELETE,INSERT,UPDATE ON tablename.* TO 'user'@'your_local_ip';
FLUSH PRIVILEGES;
最好不要为远程用户(脚本)授予所有权限
您的本地IP应该是静态IP,否则您总是更改IP或使用像服务这样的dynDNS。
(编辑) 我只是建立了一个环境:
(2003, "Can't connect to MySQL server on 'my_hostname' (61)")
(1130, "Host '213.213.213.213' is not allowed to connect to this MariaDB server")
要检查您是否可以访问远程sql服务器,请尝试
mysql -h 123.123.123.123 -u username -p
在您当地的windwos机器上,其中123.123.123.123是您的DigitalOcean服务器的IP地址。
要获取公共IP地址(星巴克之外),您可以访问this
等网站如果你真的使用0.0.0.0作为ip: 服务配置为0.0.0.0,因为IP地址用于绑定服务以进行外部访问。 0.0.0.0就像每个ip的小丑一样,但不能用于远程访问服务器/服务。