无法使用Python连接到Google Cloud API

时间:2019-07-30 05:31:13

标签: python google-cloud-platform google-cloud-sql

我正在尝试连接到我创建的Google Cloud SQL实例,但是每次尝试连接都导致错误消息,提示我无法连接或没有访问权限。我已经使用了云代理连接,专用IP连接和云外壳连接。

我已将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,“拒绝访问用户'@'localhost'(使用密码:是)”)

(pymysql.err.OperationalError)(2003,“无法连接到'localhost'上的MySQL服务器([Errno 2]没有此类文件或目录)”)

我几乎尝试了所有事情。这只是我走过的许多路线中的一个例子。任何建议或指导将不胜感激。

1 个答案:

答案 0 :(得分:0)

您要引用的示例要求您在App Engine Standard上运行,或者已使用代理在/cloudsql/<INSTANCE_CONNECTION_NAME>处创建Unix套接字。

在您的示例中,我将确保您使用的支票(SERVER_SOFTWARE env var)正常运行。

在本地运行时,您的应用程序将尝试连接127.0.0.1。为此,代理将需要运行并绑定到tcp端口。检查来自代理的日志,以查看是否引发了任何其他错误。

在App Engine中运行时,请确保您拥有followed the setup on this page以启用Cloud SQL Admin API。