Je veux créer un utilisateur de base de données pour mon script de configuration, mais createuser a un mot de passe interactif et ne semble pas aimer le tissu.Comment créer un utilisateur postgresql avec le tissu
18
A
Répondre
8
Il suffit d'utiliser SQL simple pour créer un nouvel utilisateur:
CREATE ROLE user_name WITH ENCRYPTED PASSWORD 'your password';
33
Pour étendre la réponse avec un exemple en tissu ...
# In fabfile.py
def create_database():
"""Creates role and database"""
db_user = get_user() # define these
db_pass = get_pass()
db_name = get_db_name()
sudo('psql -c "CREATE USER %s WITH NOCREATEDB NOCREATEUSER " \
"ENCRYPTED PASSWORD E\'%s\'"' % (db_user, db_pass), user='postgres')
sudo('psql -c "CREATE DATABASE %s WITH OWNER %s"' % (
db_name, db_user), user='postgres')
+0
Génial, merci beaucoup –
+1
Upwote. Mais as-tu vraiment voulu dire table dans 'db_table = get_table()'? On dirait que vous vouliez dire un nom de base de données. –
0
Ceci est probablement d'une utilisation sans avoir à écrire votre propres modules ou vous pouvez l'utiliser comme référence.
from fabtools import require
require.postgres.create_db ???
comment puis-je envoyer cette SQL postgre dans un one-liner? – user320080
Connectez-vous au client psql et envoyez la requête. http://www.postgresql.org/docs/8.4/interactive/app-psql.html –