Este artículo muestra cómo crear un usuario en un servidor de bases de datos PostgreSQL de manera simple gracias al utilitario createuser.

La herramienta de línea de comandos createuser, parte del paquete postgresql, permite crear usuarios o roles en un servidor de bases de datos PostgreSQL (local o remoto) sin necesidad de ejecutar consultas SQL.

En su forma más simple, permite crear un usuario directamente ejecutando:

$ createuser fulanito

Este comando intenta crear el rol "fulanito" en el servidor de bases de datos local (localhost) corriendo en el puerto 5432, conectándose a través de un socket Unix (típicamente localizado en la ruta /tm/.s.PGSQL.5432).

Sin embargo cuenta con un buen número de opciones:

emi@hal9000:~ % createuser --help
createuser creates a new PostgreSQL role.

Usage:
  createuser [OPTION]... [ROLENAME]

Options:
  -c, --connection-limit=N  connection limit for role (default: no limit)
  -d, --createdb            role can create new databases
  -D, --no-createdb         role cannot create databases (default)
  -e, --echo                show the commands being sent to the server
  -E, --encrypted           encrypt stored password
  -g, --role=ROLE           new role will be a member of this role
  -i, --inherit             role inherits privileges of roles it is a
                            member of (default)
  -I, --no-inherit          role does not inherit privileges
  -l, --login               role can login (default)
  -L, --no-login            role cannot login
  -N, --unencrypted         do not encrypt stored password
  -P, --pwprompt            assign a password to new role
  -r, --createrole          role can create new roles
  -R, --no-createrole       role cannot create roles (default)
  -s, --superuser           role will be superuser
  -S, --no-superuser        role will not be superuser (default)
  -V, --version             output version information, then exit
  --interactive             prompt for missing role name and attributes rather
                            than using defaults
  --replication             role can initiate replication
  --no-replication          role cannot initiate replication
  -?, --help                show this help, then exit

Connection options:
  -h, --host=HOSTNAME       database server host or socket directory
  -p, --port=PORT           database server port
  -U, --username=USERNAME   user name to connect as (not the one to create)
  -w, --no-password         never prompt for password
  -W, --password            force password prompt

Report bugs to <pgsql-bugs@postgresql.org>.

Es posible crear un usuario en cualquier servidor remoto (siempre que se disponga de un usuario y permiso de conexión válido) a través de las opciones -h (host), -p (puerto), -U (usuario) y -W (solicitar contraseña) al igual que el utilitario psql.

Una opción interesante es -e, la cual vuelca por pantalla las sentencias SQL que fueron ejecutadas en el servidor.

En el siguiente ejemplo se crea el usuario "webmaster" con rol "readonly" en el servidor "dbserver.linuxito.com" escuchando en el puerto 5432 y autenticándose como "postgres":

emi@hal9000:~ % createuser -h dbserver.linuxito.com -p 5432 -U postgres -W -D -e -E -g readonly -P -R -S webmaster
Enter password for new role: 
Enter it again: 
CREATE ROLE webmaster ENCRYPTED PASSWORD 'md501ba8b3f203e1a977a059ee61a9cf1e1' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN IN ROLE readonly;

Por supuesto el usuario "postgres" en este servidor tiene permiso para crear roles, y se tiene acceso al mismo tanto a través de su firewall como en el archivo pg_hba.conf.

La opción -D indica que el usuario no tiene permisos para crear bases de datos; -E indica que su contraseña se almacena cifrada; -P hace que la herramienta solicite de manera interactiva la contraseña para el nuevo usuario; -R impide que el usuario pueda crear roles; y por último -S indica que no es superusuario.

Referencias


Tal vez pueda interesarte


Compartí este artículo