2016-04-18 24 views
0

私は数日間この問題を抱えてきました。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)") 

私がやったことです:

  1. 私は指示に従っDjango Supportページから 私のアプリケーションを開発します。

  2. 第1世代のCloud SQLインスタンスを作成するために、 に従いました。具体的には、Cloud SDKを使用してhereの手順を説明しました。

  3. その後、hereの指示に従って新しいユーザーを作成し、パスワードを割り当てました。
  4. 私は、次のコマンドラインを使用してアプリケーションを展開:

    のgcloudプレビューアプリはMY-APP-DIR/app.yamlを--version 0-1-0

  5. を展開、私は私のIPを許可し、私のAppEngineアプリケーションID。これらは両方ともSQLインスタンスの「アクセス制御」の下の「認証」セクションにリストされています。

  6. 最後に、私は次のコマンドラインを使用してマイグレーションを適用しようとしました:

    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', 
     } 
    } 

何が原因で問題が発生しているのでしょうか?

ありがとうございました!

答えて

0

私は最終的に何が問題かを理解しました。

  1. ホワイトリストあなたのIP:

    マイグレーションを適用するためには、ユーザデータベースへのアクセスを許可する適切な方法は、次のようです。それは任意のホスト(%)を許可する」のワイルドカードを選択し、新しいデータベース・ユーザー・アカウントを作成しますが、んではない「許可されたネットワーク」

  2. の下に表示されなければならない、代わりには「名前、アドレスでホストを制限選択しますか、アドレス範囲 "オプションを選択し、あなたのIPアドレス(ホワイトリストに登録したもの)を割り当てます。
  3. あなたは今のコマンドでマイグレーションを実行することができます:サイドノートとしてSETTINGS_MODE='prod' PROJECT_DIR/manage.py migrate

、そのホストlocalhostあるrootユーザーがが他のパスワード、あなたのApp Engineアプリケーションを持っていないことを確認してくださいデータベースに接続できなくなります。

これは他の人に役立つことを願っています!

関連する問題