我有一个python应用程序,我试图访问谷歌云服务上的MySQL数据库
我一直遵循这个set up guide通过外部应用程序(Python)进行连接,我正在使用pymysql包。我正在尝试通过代理进行连接,并且已经通过gcloud auth登录从控制台验证了我的连接
到目前为止,我可以通过控制台访问数据库,但我需要能够从python脚本中进行查询以构建它。当我尝试按原样运行时,会出现以下错误: 操作错误:(2003,“无法连接到'34.86.47.192'上的MySQL服务器(超时)”
以下是我正在使用的函数,其中列出了安全敏感信息:
def uploadData():
# cd to the directory with the MySQL exe
os.chdir('C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin')
# Invoke the proxy
subprocess.call('start cloud_sql_proxy_x64.exe -instances=trans-cosine-289719:us-east4:compuweather', shell=True)
# Create connection
# I have also tried host = '127.0.0.1' for localhost here
conn = pymysql.connect(host='34.86.47.192',
user='root',
password='*******',
db='gribdata')
try:
c = conn.cursor()
# Use the right databse
db_query = 'use gribdata'
c.execute(db_query)
query = 'SELECT * FROM clients'
c.execute(query)
result = c.fetchall()
print(result)
except Error as e:
print(e)
finally:
conn.close()
是的,这一个在文档中非常有限,但您要做的是从它的托管IP运行它,并配置对服务器上的外部IP地址的访问。因此,您希望使用该IP(34.xxx.xxx.xxx)而不是环回127本地主机IP
要使其正常工作,您需要转到“连接”选项卡并在Gcloud中添加新连接。确保选中公共地址框,IP正确,并在完成后保存
一些Gcloud工程师提供了一些非常好的细节。看起来有些源文档已经过时,这是现在连接的方式
首先,确认云SQL代理确实安装在您期望的目录中。云SQL代理不是MySQL服务器的一部分,因此至少在默认情况下,您不应该在
C:\\Program Files\\MySQL\\MySQL Server 8.0\\bin
中找到它。相反,云SQL代理是Google提供的一个工具,它只是一个.exe
文件,可以存储在您想要的任何目录中。有关如何下载代理的说明,请查看docs云SQL代理在云SQL实例和您的计算机之间创建安全链接。它所做的是将计算机中的本地端口转发到云SQL实例。因此,如果您正在使用代理,那么应该使用的主机IP是
127.0.0.1
使用TCP套接字启动云SQL代理时,应该在start命令
=tcp:3306
的末尾添加要转发云SQL流量的端口您是否尝试过从控制台连接CloudSQL?连接后,控制台中会显示一条消息“Listing on 127.0.0.1:3306”。您的连接命令应为
“cloud_sql_proxy_x64.exe-instances=trans-cosine-289719:us-east4:compuweather=tcp:3306”
尝试从控制台连接云代理,并尝试创建与pymysql的连接。使用“127.0.0.1”
相关问题 更多 >
编程相关推荐