createuser
permet la création d'un utilisateur (ROLE) dans PostgreSQL. Existe-t-il un moyen simple de vérifier si cet utilisateur (nom) existe déjà? Sinon, createuser revient avec une erreur:
createuser: creation of new role failed: ERROR: role "USR_NAME" already exists
MISE À JOUR: La solution doit être exécutable à partir du shell de préférence, afin qu'il soit plus facile d'automatiser à l'intérieur d'un script.
postgresql
shell
user-management
m33lky
la source
la source
psql
est la commande. Mais si vous parlez d'createuser
utilitaire de ligne de commande (vous le faites évidemment, je n'ai pas remarqué le manque d'espacecreate user
au début), alors il peut être plus facile d'ignorer simplement l'état de sortie et de rediriger la sortie vers/dev/null
.psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'"
. Rend1
s'il est trouvé et rien d'autre.echo "SELECT rolname FROM pg_roles WHERE rolname='USR_NAME';" | psql | grep -c USR_NAME
. Ajoutez votre solution comme réponse sans "postgres" après psql.Suivre la même idée que de vérifier si une base de données existe
et vous pouvez l'utiliser dans un script comme celui-ci:
la source
pg_roles
, mais pas à un changement de commande\du
. Qu'est-ce qui ne changera probablement pas?J'espère que cela aidera ceux d'entre vous qui pourraient faire cela en python .
J'ai créé un script / solution de travail complet sur un GitHubGist - voir l'URL ci-dessous cet extrait de code.
Fournit un rôle / utilisateur de création PostgreSQL distant idempotent (RDS) à partir de python sans modules CM, etc.
la source
psql -qtA -c "\du USR_NAME" | cut -d "|" -f 1
[[ -n $(psql -qtA -c "\du ${1}" | cut -d "|" -f 1) ]] && echo "exists" || echo "does not exist"
la source