尝试从App Engine连接到Google Cloud SQL。出现错误500,日志显示:“拒绝用户'root'@'cloudsqlproxy〜'的访问(使用密码:NO)“)。App Engine和Cloud SQL位于同一个专案中。我用来连接的代码:
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
env = os.getenv('SERVER_SOFTWARE')
if (env and env.startswith('Google App Engine/')):
# Connecting from App Engine
db = MySQLdb.connect(
unix_socket='/cloudsql/<project-id>:europe-west1:<instance-name>',
user='root')
cursor = db.cursor()
cursor.execute('SELECT 1 + 1')
self.response.write('pong')
app = webapp2.WSGIApplication([
('/', MainPage),
], debug=True)
据我了解,我做的一切正确。上面的代码有效地复制了您可以在Google Dev Console中查看的代码段。有人说在StackExchange的任何地方都不应传递密码,因此我也不会这样做。创建实例时,我已经更改了root用户密码。我不明白为什么数据库会拒绝App Engine访问,因为它们在同一个项目中!有没有一种方法可以检查数据库的权限是什么?
好的,结果发现有一些错误信息在发生。添加密码参数解决了我的问题。但是由于某种原因,Google文档中没有提及此内容,而StackOverflow上的许多帖子实际上直接告诉您相反的情况,称如果从AppEngine登录时将密码传递给密码,则Cloud SQL会抛出错误。也许是最近的一些更新是导致此问题的原因,但就我而言,通过密码解决了该问题。希望对您有所帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句