2016-09-05 16 views
0

App EngineからGoogle Cloud SQLに接続しようとしました。エラー500を取得し、ログに「アクセスが拒否されました。ユーザー 'root' @ 'cloudsqlproxy〜'(パスワードを使用:NO)」)。 App EngineとクラウドSQLは同じプロジェクトにあります。接続するコード:App EngineからGoogle 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へのアクセスを拒否するのか、同じプロジェクトにいるのか分かりません。どのようなデータベースのアクセス許可を確認する方法はありますか?

答えて

1

はい、間違ったことが起こっています。パスワードのパラメータを追加すると、私の問題が解決しました。しかし何らかの理由で、Googleドキュメントには言及されておらず、StackOverflowに関する多くの記事は、AppEngineからログインしたときにパスワードを渡すとCloud SQLがエラーをスローすると言っています。たぶん最近のアップデートがこれの原因ですが、私の場合、パスワードを渡すことで問題は解決しました。希望が助けてくれる!

0

私は、この部分がGoogle Developer Consoleに十分に文書化されていないと言います。

Google Cloud SQL 2nd Genは、コードに含まれていない接続文字列に少し変更が必要です。

私の側からいくつかの変更後に元のコードを見てください:

class MainPage(webapp2.RequestHandler): 

def get(self): 

self.response.headers['Content-Type'] = 'text/plain' 

#db connection 
if (os.getenv('SERVER_SOFTWARE') and 
    os.getenv('SERVER_SOFTWARE').startswith('Google App Engine/')): 
    db = MySQLdb.connect(unix_socket='/cloudsql/<project-id>:europe-west1<instance-name>, db = 'your-db', user= 'root', passwd='your-root-password') 
else: 
    db = MySQLdb.connect(host = '10.10.0.1', port=3306, 
            db = 'your-db', user='root', passwd='root-password') 

cursor = db.cursor() 
cursor.execute('SELECT 1 + 1') 

self.response.write('pong') 

app = webapp2.WSGIApplication([ 
('/', MainPage), 
], debug=True) 

よろしく。

関連する問題