私は数日間この問題を抱えてきました。Google Cloud SQLでデータベースユーザーへのアクセスを適切に許可するにはどうすればよいですか?
私はDjangoを使用してappengineのアプリケーションを開発しました。私は自分のデータベースにGoogle Cloud SQLを使用したいと思います。それは次のエラーで失敗したときに、私は、開発サーバ上のマイグレーションを適用するまで、すべてが正常に動作します:次のように
django.db.utils.OperationalError: (1045, "Access denied for user 'MY_DB_USER'@'MY_IP' (using password: YES)")
私がやったことです:
私は指示に従っDjango Supportページから 私のアプリケーションを開発します。
第1世代のCloud SQLインスタンスを作成するために、 に従いました。具体的には、Cloud SDKを使用してhereの手順を説明しました。
- その後、hereの指示に従って新しいユーザーを作成し、パスワードを割り当てました。
私は、次のコマンドラインを使用してアプリケーションを展開:
のgcloudプレビューアプリはMY-APP-DIR/app.yamlを--version 0-1-0
を展開、私は私のIPを許可し、私のAppEngineアプリケーションID。これらは両方ともSQLインスタンスの「アクセス制御」の下の「認証」セクションにリストされています。
最後に、私は次のコマンドラインを使用してマイグレーションを適用しようとしました:
SETTINGS_MODE = 'PROD' MY-APP-DIRを/移行manage.pyの
settings.py
私のsettings.pyの関連部分は次のようになります:
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'):
DEBUG = False
# Running on production App Engine, so use a Google Cloud SQL database.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST' : '/cloudsql/[MY-PROYECT-ID]:[MY-CLOUD-SQL-INSTANCE]',
'NAME': '[MY-DB-NAME]',
'USER': 'root',
}
}
elif os.getenv('SETTINGS_MODE') == 'prod':
DEBUG = False
# Running in development, but want to access the Google Cloud SQL instance
# in production.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '[MY-DB-NAME]', # db name.
'USER': '[MY-DB-USER]',
'PASSWORD' : '[MY-DB-USER-PASSWORD]',
'HOST' : '[IPV4 ASSIGNED IN GOOGLE CONSOLE]',
'PORT': '3306',
}
}
else:
# Running in development, so use a local MySQL database.
DEBUG = True
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '[MY-LOCAL-DB]',
'USER': 'root',
'PASSWORD': 'root',
}
}
何が原因で問題が発生しているのでしょうか?
ありがとうございました!