【发布时间】:2019-12-07 10:39:59
【问题描述】:
我正在尝试连接到我创建的 Google Cloud SQL 实例,但每次尝试连接都会导致错误消息提示我无法连接或无权访问。我使用了云代理连接、私有 IP 连接和 Cloud shell 连接。
我使用 cloudsql git 存储库作为参考 (https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard/cloudsql)
我只针对我的特定项目和实例更改了这些文件。
收集有关连接的信息:
CLOUDSQL_CONNECTION_NAME = os.environ.get('CLOUDSQL_CONNECTION_NAME')
CLOUDSQL_USER = os.environ.get('CLOUDSQL_USER')
CLOUDSQL_PASSWORD = os.environ.get('CLOUDSQL_PASSWORD')
设置连接(包含在 git 中):
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
# Connect using the unix socket located at
# /cloudsql/cloudsql-connection-name.
cloudsql_unix_socket = os.path.join(
'/cloudsql', CLOUDSQL_CONNECTION_NAME)
db = MySQLdb.connect(
unix_socket=cloudsql_unix_socket,
user=CLOUDSQL_USER,
passwd=CLOUDSQL_PASSWORD)
else:
db = MySQLdb.connect(
host='127.0.0.1', user=CLOUDSQL_USER, passwd=CLOUDSQL_PASSWORD)
我收到的错误:
pymysql.err.OperationalError: (1045, "Access denied for user ''@'localhost' (using password: YES)")
和
(pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'localhost' ([Errno 2] No such file or directory)")
我几乎尝试了所有方法。这只是我采取的众多路线中的一个例子。任何建议或指导将不胜感激。
【问题讨论】:
-
此错误意味着您连接到数据库的“用户名”不正确,或者您没有向该用户“授予权限”。这些是 MySQL 问题,而不是 GCP 问题。您可以在 Cloud SQL 控制台或直接在 MySQL 数据库中修改用户。 chartio.com/resources/tutorials/… 首先使用
mysql命令行工具进行测试。然后转到 Python 代码。 -
您链接的参考用于将 App Engine 标准服务连接到 Cloud SQL 实例。那是你的情况吗?如果没有,您从哪里连接?
标签: python google-cloud-platform google-cloud-sql