Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Je travaille sur PostgreSQL 8.4 (CentOS 6), j'ai une base de données avec notamment un rôle LOGIN configuré avec un mot de passe. Ce rôle est utilisé pour l'accès d'une application PHP. La connexion de l'appli à la base fonctionne sans problème.
Aujourd'hui je voudrais changer le mot de passe de ce rôle, mais psql me dit qu'il ne le trouve pas, alors que la commande \du le liste bien.
Je me connecte à mon serveur :
# psql -U administrator -W --dbname MYDB
avec "administrator" qui a les privilèges CREATEROLE et CREATEBASE.
Je tape la commande :
MYDB=> ALTER ROLE "MYAPP_CONNECT" WITH PASSWORD 'XXXXXXXX';
ERREUR: le rôle « myapp_connect » n'existe pas
Pourtant la commande \du fais bien apparaitre le rôle « myapp_connect » :
MYDB=> \du
Nom du rôle | Attributs | Membre de
--------------------------+--------------------------+---------------------------------
MYAPP_CONNECT | | {MYAPP_CONNECT_ROLE}
MYAPP_CONNECT_ROLE | Ne peut pas se connecter | {}
Voilà, c'est un bug ou bien il y a quelques chose que je n'ai pas compris ?
Merci d'avoir lu mon problème ^^
Hors ligne
D'après le message, il semble que vous n'ayez pas saisi les guillemets doubles autour de « MYAPP_CONNECT ».
Avez-vous exécuté
ALTER ROLE "MYAPP_CONNECT" WITH PASSWORD 'XXXXXXXX';
ou
ALTER ROLE MYAPP_CONNECT WITH PASSWORD 'XXXXXXXX';
?
Le premier devrait marcher, et le second vous donner l'erreur que vous avez eu.
Julien.
https://rjuju.github.io/
Hors ligne
Merci pour votre réponse rapide !
Malheureusement j'ai bien mis les double-quotes dès le départ. Et en fait si j'enlève les double-quotes autour du nom du rôle (ce qui est valide me semble t-il) j'ai le même message d'erreur.
Hors ligne
Bonjour,
Avez-vous essayé avec :
alter user "MYAPP_CONNECT" with password 'XXXXXXX';
Cordialement,
Cordialement,
Sébastien.
Hors ligne
essayez aussi :
alter user \"MYAPP_CONNECT\" with password 'XXXXXXX';
Cordialement,
Sébastien.
Hors ligne
de plus pouvez vous nous donner l'ordre sql de création du rôle (l'ordre exacte) ?
Cordialement,
Sébastien.
Hors ligne
Avez-vous essayé avec :
alter user "MYAPP_CONNECT" with password 'XXXXXXX';
Ah comme ça ça marche !! Merci !
Il faut que je mette les commandes en minuscules (alter role), le rôle en majuscule et entre double-quotes. Toute autre forme d'écriture ne fonctionne pas. C'est normal ?
de plus pouvez vous nous donner l'ordre sql de création du rôle (l'ordre exacte) ?
Ce n'est pas moi qui est créé ce rôle donc je ne sais pas.
Dernière modification par lecbee (05/03/2015 17:39:29)
Hors ligne
en fait tout dépend de la commande de création. Donc...
Cordialement,
Sébastien.
Hors ligne
en fait tout dépend de la commande de création. Donc...
Ça m'étonne quand même beaucoup que alter role "MYAPP_CONNECT" with password 'XXXXXXX'; fonctionne mais pas ALTER ROLE "MYAPP_CONNECT" WITH PASSWORD 'XXXXXXX';
Hors ligne
Il faut voir aussi que vous êtes en version 8.4. La syntaxe de psql est peut être très pointilleuse dans cette version.
Il serait peut être temps de migrer vers une version récente (surtout que la 8.4 n'est plus supportée depuis juillet 2014°.
Cordialement,
Sébastien.
Hors ligne
Il faut voir aussi que vous êtes en version 8.4. La syntaxe de psql est peut être très pointilleuse dans cette version.
Oui c'est peut-être ça.
Il serait peut être temps de migrer vers une version récente (surtout que la 8.4 n'est plus supportée depuis juillet 2014°.
C'est vrai mais c'est surtout qu'on devrait re-valider une partie de nos applications en migrant vers plus récent.
Et comme la 8.4 est fonctionnelle pour nous et supportée par Red Hat encore plusieurs années, c'est pas vraiment à l'ordre du jour chez nous ^^
Dernière modification par lecbee (05/03/2015 22:04:58)
Hors ligne
Non, la 8.4 n'est pas en cause. L'ordre SQL s'écrit en majuscule ou en minuscule, peu importe. La casse du rôle est important par contre.
Guillaume.
Hors ligne
L'ordre SQL s'écrit en majuscule ou en minuscule, peu importe.
Absolument, sauf que l'expérience que j'ai eu ici dans ce cas précis montre le contraire. Seul un "alter role" en minuscule fonctionne, mais pas en majuscule. C'est donc pour ça que je me demandais si ce n'était pas un bug car ce n'est pas normal.
Hors ligne
Ça fonctionne parfaitement en 8.4 :
$ psql
psql (8.4.22)
Type "help" for help.
postgres=# select version();
version
-------------------------------------------------------------------------------------------------------------------
PostgreSQL 8.4.22 on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.8.3 20140624 (Red Hat 4.8.3-1), 64-bit
(1 row)
postgres=# CREATE USER toto;
CREATE ROLE
postgres=# alter user toto password 'titi';
ALTER ROLE
postgres=# ALTER USER toto PASSWORD 'titi';
ALTER ROLE
postgres=# CREATE USER "TotOTo";
CREATE ROLE
postgres=# alter user "TotOTo" password 'titi';
ALTER ROLE
postgres=# ALTER USER "TotOTo" PASSWORD 'titi';
ALTER ROLE
Il y a forcément autre chose qui ne colle pas.
Guillaume.
Hors ligne
Il y a forcément autre chose qui ne colle pas.
En effet, je viens d'essayer depuis chez moi (machine Fedora 21) et là ça marche très bien.
Par contre au boulot je suis sur Windows 7 avec PuTTY. J’essaierai demain au boulot depuis un autre PC.
Hors ligne
Bon maintenant ça marche aussi... j'ai du me gourer quelque part avec les majuscules du mon utilisateur "MYAPP_CONNECT", je ne vois que ça...
Merci pour votre aide.
Dernière modification par lecbee (06/03/2015 11:15:22)
Hors ligne
Pages : 1