createuser
Ermöglicht die Erstellung eines Benutzers (ROLE) in PostgreSQL. Gibt es eine einfache Möglichkeit zu überprüfen, ob dieser Benutzer (Name) bereits vorhanden ist? Andernfalls kehrt createuser mit einem Fehler zurück:
createuser: creation of new role failed: ERROR: role "USR_NAME" already exists
UPDATE: Die Lösung sollte vorzugsweise über die Shell ausführbar sein, damit die Automatisierung innerhalb eines Skripts einfacher ist.
postgresql
shell
user-management
m33lky
quelle
quelle
psql
ist der Befehl. Aber wenn Sie über dascreateuser
Befehlszeilenprogramm sprechen (Sie haben es offensichtlich getan, ich habe den Platzmangelcreate user
zuerst nicht bemerkt ), ist es möglicherweise einfacher, den Exit-Status zu ignorieren und die Ausgabe an umzuleiten/dev/null
.psql postgres -tAc "SELECT 1 FROM pg_roles WHERE rolname='USR_NAME'"
. Erträge,1
wenn gefunden und sonst nichts.echo "SELECT rolname FROM pg_roles WHERE rolname='USR_NAME';" | psql | grep -c USR_NAME
. Fügen Sie Ihre Lösung als Antwort ohne "postgres" nach psql hinzu.Nach der gleichen Idee, als zu überprüfen, ob eine Datenbank vorhanden ist
und Sie können es in einem Skript wie diesem verwenden:
quelle
pg_roles
, jedoch keine Änderung des Befehls\du
. Was wird sich am wahrscheinlichsten nicht ändern?Hoffe, das hilft denen von euch, die dies in Python tun könnten .
Ich habe ein vollständiges funktionierendes Skript / eine Lösung auf einem GitHubGist erstellt - siehe URL unter diesem Codeausschnitt.
Bietet idempotent remote (RDS) PostgreSQL zum Erstellen einer Rolle / eines Benutzers aus Python ohne CM-Module usw.
quelle
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"
quelle