web-dev-qa-db-fra.com

postgresql: FATAL: échec de l'authentification du mot de passe pour l'utilisateur "douglas"

in first: désolé pour ce doublon, mais les autres questions similaires relatives à ce problème indiquent toujours la même méthode pour résoudre ce problème, mais ne fonctionnent pas pour moi. J'essaie de migrer une base de données de sqlite vers postgresql ... alors J'écris:

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

et la sortie retourne: "ALTER ROLE"

mais quand je tape "python manage.py migrate", je reçois toujours la même erreur:

Django.db.utils.OperationalError: FATAL: authentification par mot de passe échoué pour l'utilisateur "douglas"

settings.py:

# Application definition

INSTALLED_APPS = [
    'Django.contrib.admin',
    'Django.contrib.auth',
    'Django.contrib.contenttypes',
    'Django.contrib.sessions',
    'Django.contrib.messages',
    'Django.contrib.staticfiles',
    'app',
]

MIDDLEWARE = [
    'Django.middleware.security.SecurityMiddleware',
    'Django.contrib.sessions.middleware.SessionMiddleware',
    'Django.middleware.common.CommonMiddleware',
    'Django.middleware.csrf.CsrfViewMiddleware',
    'Django.contrib.auth.middleware.AuthenticationMiddleware',
    'Django.contrib.messages.middleware.MessageMiddleware',
    'Django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'site_.urls'

TEMPLATES = [
    {
        'BACKEND': 'Django.template.backends.Django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'Django.template.context_processors.debug',
                'Django.template.context_processors.request',
                'Django.contrib.auth.context_processors.auth',
                'Django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'site_.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

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


DATABASES = {
    'default': {
        'ENGINE': 'Django.db.backends.postgresql',
        'NAME': 'douglas_db',
        'USER': 'douglas',
        'PASSWORD': 'vamointer',
        'Host': '127.0.0.1',
        'PORT': '5432',
    }
}
# Password validation
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators

#DATABASES = {'default': dj_database_url.config(default='postgres://127.0.0.1:5432/postgres_db_name')}

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'Django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'Django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'Django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'Django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/1.10/topics/i18n/

LANGUAGE_CODE = 'pt-br'

TIME_ZONE = 'America/Sao_Paulo'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

ps: Lorsque je lance le 'ALTER USER postgres WITH PASSWORD', je mets le même mot de passe défini dans le fichier settings.py.

Merci!

6
Douglas da Silva

Le code SQL que vous exécutez ne correspond pas à l'utilisateur que vous tentez d'utiliser.

Vous devrez créer l'utilisateur s'il n'existe pas 

CREATE USER douglas WITH PASSWORD 'vamointer';

ou s'il existe, changez le mot de passe de cet utilisateur à la place.

ALTER USER douglas WITH PASSWORD 'vamointer';

Une fois que vous avez fait cela, vous devriez avoir plus de chance. Vous devrez peut-être aussi attribuer des autorisations à cet utilisateur .

6
Shadow

Les caractères spéciaux dans postgresql sont convertis en caractères différents lors de l'exécution. Assurez-vous de ne pas avoir de caractères spéciaux (#, $, etc.) dans votre mot de passe.

Si vous le faites, changez le mot de passe postgresql comme suit:

Sudo -u postgresql psql
postgresql=#alter yourusername with password 
'set_new_password_without_special_character';

Assurez-vous de ne pas oublier le ; à la fin de la commande postgresql. Puis lancez python manage.py et ça devrait marcher!

1
HAL 9000