更新时间:2021-12-29 21:58:36
终于拿到了,我是这样让它工作的:
使用编辑my.cnf(此文件可以位于多个不同位置,甚至可能不存在,我将我的文件放在此处/usr/local/etc/
:
[mysqld]
bind-address=0.0.0.0
skip-host-cache
skip-name-resolve
将端口3306开放到互联网(对于Xfinity,这意味着进入http://10.0.0.1/单击左侧的"高级">底部的"端口转发">"添加设备",找到运行MySQL的设备,然后单击"添加")
在MySQL和FLUSH PRIVILEGES;
中授予相应权限。您可以使用GRANT ALL PRIVILEGES ON *.* TO <USER>@'%' IDENTIFIED BY '<PASSWORD>'
来完成此操作,但这允许任何IP,下面的Python脚本将授予Google的IP。您应该根据Google的JDBC文档检查此IP列表。
from sqlalchemy import create_engine, MetaData
conString = 'mysql+pymysql://<USER>:<PASSWORD>@localhost:3306/<DB>'
mysql = create_engine(conString)
ips = ['64.18.0.0 - 64.18.15.255',
'64.233.160.0 - 64.233.191.255',
'66.102.0.0 - 66.102.15.255',
'66.249.80.0 - 66.249.95.255',
'72.14.192.0 - 72.14.255.255',
'74.125.0.0 - 74.125.255.255',
'173.194.0.0 - 173.194.255.255',
'207.126.144.0 - 207.126.159.255',
'209.85.128.0 - 209.85.255.255',
'216.239.32.0 - 216.239.63.255']
for ip in ips:
ip2 = ip.replace(' - ', '/')
try:
sql = "CREATE USER '<USER>'@'" + ip2 + "' identified by '<PASSWORD>';"
mysql.execute(sql)
except:
print ip2
sql = "GRANT ALL PRIVILEGES ON <DB>.* TO '<USER>'@'" + ip2 + "';"
mysql.execute(sql)