createuser — define una nueva cuenta de usuario de PostgreSQL
createuser [opción-de-conexión...] [opción...] [nombre_usuario]
createuser crea un
nuevo usuario de PostgreSQL (o más precisamente, un rol).
Solo los superusuarios y los usuarios con el privilegio CREATEROLE pueden crear
nuevos usuarios, por lo que createuser debe ser
invocado por alguien que pueda conectarse como superusuario o como un usuario con el
privilegio CREATEROLE.
Si deseas crear un rol con los privilegios SUPERUSER,
REPLICATION o BYPASSRLS,
debes conectarte como superusuario, no simplemente con el privilegio
CREATEROLE.
Ser superusuario implica la capacidad de eludir todas las comprobaciones de permisos de acceso
dentro de la base de datos, por lo que el acceso de superusuario no debe concederse a la ligera.
CREATEROLE también otorga
privilegios muy amplios.
createuser es un envoltorio del
comando SQL CREATE ROLE.
No hay ninguna diferencia real entre crear usuarios mediante
esta utilidad y mediante otros métodos para acceder al servidor.
createuser acepta los siguientes argumentos de línea de comandos:
nombre_usuarioEspecifica el nombre del usuario de PostgreSQL que se va a crear. Este nombre debe ser diferente de todos los roles existentes en esta instalación de PostgreSQL.
-a rol--with-admin=rol
Especifica un rol existente que se añadirá automáticamente como miembro del nuevo
rol con la opción admin, otorgándole el derecho de conceder la pertenencia en el
nuevo rol a otros. Se pueden especificar múltiples roles existentes
escribiendo múltiples opciones -a.
-c número--connection-limit=númeroEstablece un número máximo de conexiones para el nuevo usuario. El valor predeterminado es no establecer ningún límite.
-d--createdbSe le permitirá al nuevo usuario crear bases de datos.
-D--no-createdbNo se le permitirá al nuevo usuario crear bases de datos. Este es el comportamiento predeterminado.
-e--echoMuestra los comandos que createuser genera y envía al servidor.
-E--encryptedEsta opción está obsoleta pero todavía se acepta para compatibilidad con versiones anteriores.
-g rol--member-of=rol--role=rol (obsoleto)
Especifica que el nuevo rol debe añadirse automáticamente como miembro
del rol existente especificado. Se pueden especificar múltiples roles existentes
escribiendo múltiples opciones -g.
-i--inheritEl nuevo rol heredará automáticamente los privilegios de los roles de los que es miembro. Este es el comportamiento predeterminado.
-I--no-inheritEl nuevo rol no heredará automáticamente los privilegios de los roles de los que es miembro.
--interactive
Solicita el nombre de usuario si no se especifica ninguno en la línea de comandos, y
también solicita confirmación para cualquiera de las opciones
-d/-D,
-r/-R,
-s/-S que no se haya especificado en la línea de
comandos. (Este era el comportamiento predeterminado hasta PostgreSQL 9.1).
-l--loginSe le permitirá al nuevo usuario iniciar sesión (es decir, el nombre de usuario se puede utilizar como el identificador de usuario de la sesión inicial). Este es el comportamiento predeterminado.
-L--no-loginNo se le permitirá al nuevo usuario iniciar sesión. (Un rol sin el privilegio login sigue siendo útil como medio para gestionar los permisos de la base de datos).
-m rol--with-member=rol
Especifica un rol existente que se añadirá automáticamente
como miembro del nuevo rol. Se pueden especificar múltiples roles existentes
escribiendo múltiples opciones -m.
-P--pwpromptSi se especifica, createuser solicitará la contraseña del nuevo usuario. Esto no es necesario si no tienes previsto utilizar la autenticación por contraseña.
-r--createrole
Se le permitirá al nuevo usuario crear, alterar, eliminar, comentar sobre,
o cambiar la etiqueta de seguridad para otros roles; es decir,
este usuario tendrá el privilegio CREATEROLE.
Consulta la creación de roles para obtener más detalles sobre qué
capacidades otorga este privilegio.
-R--no-createroleNo se le permitirá al nuevo usuario crear nuevos roles. Este es el comportamiento predeterminado.
-s--superuserEl nuevo usuario será un superusuario.
-S--no-superuserEl nuevo usuario no será un superusuario. Este es el comportamiento predeterminado.
-v marca_temporal--valid-until=marca_temporalEstablece una fecha y hora después de la cual la contraseña del rol dejará de ser válida. El valor predeterminado es no establecer ninguna fecha de vencimiento de la contraseña.
-V--versionMuestra la versión de createuser y finaliza.
--bypassrlsEl nuevo usuario omitirá todas las políticas de seguridad a nivel de fila (RLS).
--no-bypassrlsEl nuevo usuario no omitirá las políticas de seguridad a nivel de fila (RLS). Este es el comportamiento predeterminado.
--replication
El nuevo usuario tendrá el privilegio REPLICATION,
el cual se describe con más detalle en la documentación de CREATE ROLE.
--no-replication
El nuevo usuario no tendrá el privilegio REPLICATION,
el cual se describe con más detalle en la documentación de CREATE ROLE. Este es el comportamiento predeterminado.
-?--helpMuestra la ayuda sobre los argumentos de línea de comandos de createuser y finaliza.
createuser también acepta los siguientes argumentos de línea de comandos para los parámetros de conexión:
-h host--host=hostEspecifica el nombre de host de la máquina en la que se está ejecutando el servidor. Si el valor comienza con una barra diagonal, se utiliza como el directorio para el socket de dominio Unix.
-p puerto--port=puertoEspecifica el puerto TCP o la extensión del archivo de socket de dominio Unix local en el que el servidor está escuchando conexiones.
-U usuario--username=usuarioNombre de usuario con el que conectarse (no el nombre de usuario a crear).
-w--no-password
Nunca solicita una contraseña. Si el servidor requiere
autenticación por contraseña y no hay una contraseña disponible por
otros medios, como un archivo .pgpass, el
intento de conexión fallará. Esta opción puede ser útil en
trabajos por lotes y scripts donde no hay ningún usuario presente para introducir una
contraseña.
-W--passwordFuerza a createuser a solicitar una contraseña (para conectarse al servidor, no para la contraseña del nuevo usuario).
Esta opción nunca es indispensable, ya que
createuser solicitará automáticamente
una contraseña si el servidor exige autenticación por contraseña.
Sin embargo, createuser desperdiciará un
intento de conexión para descubrir que el servidor requiere una contraseña.
En algunos casos, vale la pena escribir -W para evitar el
intento de conexión adicional.
PGHOSTPGPORTPGUSERParámetros de conexión predeterminados.
PG_COLOR
Especifica si se debe usar color en los mensajes de diagnóstico. Los valores posibles
son always, auto y
never.
Esta utilidad, al igual que la mayoría de las demás utilidades de PostgreSQL, también utiliza las variables de entorno soportadas por libpq (consulta la Section 32.15).
En caso de dificultad, consulta la CREATE ROLE y la psql para obtener información sobre posibles problemas y mensajes de error. El servidor de la base de datos debe estar ejecutándose en el host de destino. Además, se aplicará cualquier configuración de conexión predeterminada y variable de entorno utilizada por la biblioteca frontend libpq.
Para crear un usuario joe en el servidor de base de datos
predeterminado:
$createuser joe
Para crear un usuario joe en el servidor de base de datos
predeterminado solicitando algunos atributos adicionales:
$createuser --interactive joeShall the new role be a superuser? (y/n)nShall the new role be allowed to create databases? (y/n)nShall the new role be allowed to create more new roles? (y/n)n
Para crear el mismo usuario joe usando el
servidor en el host eden, puerto 5000, con atributos especificados explícitamente,
echando un vistazo al comando subyacente:
$createuser -h eden -p 5000 -S -D -R -e joeCREATE ROLE joe NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
Para crear el usuario joe como superusuario,
y asignarle una contraseña inmediatamente:
$createuser -P -s -e joeEnter password for new role:xyzzyEnter it again:xyzzyCREATE ROLE joe PASSWORD 'SCRAM-SHA-256$4096:44560wPMLfjqiAzyPDZ/eQ==$4CA054rZlSFEq8Z3FEhToBTa2X6KnWFxFkPwIbKoDe0=:L/nbSZRCjp6RhOhKK56GoR1zibCCSePKshCJ9lnl3yw=' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN NOREPLICATION NOBYPASSRLS;
En el ejemplo anterior, la nueva contraseña no se muestra realmente en la pantalla al escribirla, pero mostramos lo que se escribió para mayor claridad. Como se puede ver, la contraseña se encripta antes de ser enviada al cliente.