web-dev-qa-db-ja.com

postgresql:致命的:ユーザー "douglas"のパスワード認証に失敗しました

私はDBをsqliteからpostgresqlに移行しようとしています...だから私は入力しました:

Sudo -u postgres psql
postgres=# ALTER USER postgres WITH PASSWORD 'newpassword';

出力はALTER ROLEを返します

しかし、python manage.py migrateと入力すると、常に同じエラーが表示されます。

Django.db.utils.OperationalError:FATAL:ユーザー「douglas」のパスワード認証に失敗しました

これは私のsettings.pyのデータベースセクションです。

# Old, using mysqlite
"""
DATABASES = {
    #'default': {
    #    'ENGINE': 'Django.db.backends.sqlite3',
    #    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    #}
    'default': dj_database_url.config(default='postgres://localhost:5432/postgres_db_name'),
}
"""

# New, using postgres
DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.postgresql',
        'NAME': 'douglas_db',
        'USER': 'douglas',
        'PASSWORD': 'vamointer',
        'Host': '127.0.0.1',
        'PORT': '5432',
    }
}

注:「ALTER USER postgres WITH PASSWORD」を実行すると、settings.pyで定義されているのと同じパスワードが入力されます。

12

実行しているSQLは、使用しようとしているユーザーと一致しません。

ユーザーの作成 が存在しない場合は、次のようにする必要があります。

CREATE USER douglas WITH PASSWORD 'vamointer';

または、存在する場合は、代わりに そのユーザーのパスワードを変更します

ALTER USER douglas WITH PASSWORD 'vamointer';

それができたら、もっと運がいいはずです。 そのユーザーにアクセス許可を割り当てる も必要になる場合があります。

11
Shadow

Postgresqlの特殊文字は、実行中に異なる文字に変換されます。パスワードに特殊文字(#、$など)が含まれていないことを確認してください。

その場合、次のようにpostgresqlのパスワードを変更します。

Sudo -u postgresql psql
postgresql=#ALTER USER yourusername WITH PASSWORD 
'set_new_password_without_special_character';

Postgresqlコマンドの最後にある;を忘れないでください。次にpython manage.pyを実行すると動作します!

4
HAL 9000

私のように骨が折れていて、settings.pyのDjangoデータベース設定で、 'USER'の代わりに 'USERNAME'を使用している場合は、必ず 'USER'に変更してください。これと同じエラーを参照してください。

1
Harlin