python - 无法使用 Python 连接到 Google Cloud API
问题描述
我正在尝试连接到我创建的 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)")
我几乎什么都试过了。这只是我采取的众多路线中的一个例子。任何建议或指导将不胜感激。
解决方案
您引用的示例要求您在 App Engine Standard 上运行,或者已使用代理在/cloudsql/<INSTANCE_CONNECTION_NAME>
.
在您的示例中,我将确保您正在使用的检查(SERVER_SOFTWARE
env var)正常工作。
当您在本地运行时,您的应用程序将尝试连接 127.0.0.1。为此,代理需要运行并绑定到 tcp 端口。检查来自代理的日志以查看是否引发了任何其他错误。
当您在 App Engine 中运行时,请确保您已按照此页面上的设置启用 Cloud SQL Admin API。
推荐阅读
- android - 如何在一行中的图标下方制作文本并使行从屏幕底部开始(Flutter)
- python - anaconda 虚拟环境中的 TensorFlow 导入问题
- reactjs - 我如何在antd设计的From中初始值?
- python-3.x - 使用 pyproject.toml 时如何仅在一处指定版本?
- sql - 具有日期范围的 Oracle SQL
- windows - 如何在不关闭媒体的情况下更改 Windows 10 中的用户?
- ios - Xcode 12 中的此设置在哪里... DISABLE_INFOPLIST_PLATFORM_PROCESSING
- ruby-on-rails - 嵌套循环方法,RoR
- javascript - 问:Chrome 扩展:只有某些网站不应用“注入作为静态声明”
- java - Java 上的 While 循环