Muy buenos días y bienvenidos al hogar de todos los postgreros y postgreras. En esta ocasión estaremos tratando una de las tareas más comunes de un administrador; la creación de usuarios en PostgreSQL.
Crear usuarios en PostgreSQL: createuser
Crear usuarios en PostgreSQL es muy sencillo, existe una aplicación en la carpeta de binarios de postgres que se llama createuser. Con este comando podrás crear de manera muy sencilla un nuevo ROLE con permisos de acceso en tu base de datos.
Y, ¿por qué digo ROLE ?. En PostgreSQL no existen los usuarios y los grupos como tal, sino que tenemos roles. El comando createuser es un wrapper que crea un ROLE con permisos de conexión.
Para conocer mucho más en profundidad el tema, estoy seguro que te interesa nuestro Curso de Sentencias DDL, DML, DCL y TCL. Mira el listado completo de Cursos y Carreras en PostgreSQL.
Para poder crear un usuario (ROLE) es necesario tener permisos de super usuario o privilegios de CREATEROLE.
Debemos tener especial cuidado. Los usuarios tienen permisos de conexión, es decir, pueden conectarse a nuestro cluster. Esto no quiere decir que tengan permisos de acceso a nuestra base de datos, para ello tenemos otros comandos.
La sintaxis para ejecutar createuser es la siguiente:
createuser [connection-option...] [option...] [username]
Por ello, en las opciones de conexión deberemos utilizar las habituales para conectarnos y para ayudarnos podemos hacer uso de variables de entorno como PGHOST, PGPORT y PGUSER.
Por ejemplo, si queremos crear un usuario llamado todopostgre podemos utilizar la siguiente sintaxis:
createuser --interactive todopostgre
Con este comando crearemos de manera interactiva un usuario llamado todopostgre, es decir, nos irá pidiendo toda la información necesaria para crear un usuario.
Manos al teclado
Como resumen, vamos a poner un ejemplo de una tarea habitual de creación de usuarios, esta vez desde una conexión creada desde el programa psql:
CREATE USER emilio WITH PASSWORD 'password-del-usuario-emilio'; GRANT ALL PRIVILEGES ON DATABASE facturas to emilio; \q
Con estos comandos hemos creado un usuario llamado emilio, se le ha dado todos los privilegios sobre la base de datos factura.
Ahora vamos a conectarnos con este usuario:
psql -d facturas -U emilio
Se podría hacer de manera visual con herramientas como pgAdmin. Sin embrago de esta manera podemos automatizarlo con tareas programadas, llamadas desde aplicaciones externas como Java, Python, Delphi, entre otros.