Por defecto cuando instalamos PostgreSQL este automáticamente incluye el super usuario postgres. Inicialmente tu debes conectarte a PostgreSQL como el usuario postgres, luego que crees un usuario ya puedes cambiarte a este nuevo usuario creado, que en PostgreSQL son conocidos como roles.

Existen dos maneras de crear estos roles en PostgreSQL:

  • Directamente ejecutando una consulta SQL en la base de datos.
  • Usando la utilidad de linea de comandos createuser.

Con psql

La sintaxis básica para crear un role es:

CREATE ROLE nombre_usuario WITH LOGIN PASSWORD 'password'

En esta sentencia, nombre_usuario es el usuario que quieres crear y password entre comillas es la contraseña que quieres asignarle a este usuario.

Ahora, para que puedas ejecutar este comando, debes ingresar a la terminal interactiva de PostgreSQL con:

$ psql postgres
postgres=#

Una vez dentro podemos ejecutar el comando que detallamos anteriormente. Ahora veamos un ejemplo:

postgres=# CREATE ROLE edwinpgm WITH LOGIN PASSWORD 'la clave mas buena';

Ahora se ha creado el usuario edwinpgm pero básicamente este usuario no puede hacer nada. Para que este usuario pueda crear base de datos tenemos que correr el siguiente comando:

postgres=# ALTER ROLE edwinpgm CREATEDB;

Con esto ya el usuario creado podría crear las bases de datos que desee.

Con createuser

Cuando instalas PostgreSQL en tu ordenador o servidor, este trae varias utilidades que te harán la vida mas fácil. Una de ellas es createuser, que como su nombre lo dice, nos permite crear usuarios en PostgreSQL.

Por ejemplo queremos crear un nuevo usuario karen.

$ createuser karen

Esto ha creado el usuario karen, pero que no tiene permisos para nada. Entonces si quisiéramos que tenga permisos para crear base de datos podríamos hacer lo siguiente:

$ createuser karen --createdb

Con esto ya el nuevo usuario podrá crear base de datos.

Otra manera de usar esta utilidad es de la siguiente manera:

$ createuser --interactive --pwprompt

De esta manera el sistema te ira pidiendo información del usuario que intentas crear, como el nombre, la contraseña, si es super usuario, etc.

Como resumen tenemos dos maneras muy prácticas de crear usuarios o mas conocidos como roles en PostgreSQL.