1.3. Crear una base de datos #

La primera prueba para ver si puedes acceder al servidor de bases de datos es intentar crear una base de datos. Un servidor PostgreSQL en ejecución puede gestionar muchas bases de datos. Normalmente, se utiliza una base de datos independiente para cada proyecto o para cada usuario.

Es posible que el administrador de tu entorno ya haya creado una base de datos para tu uso. En ese caso, puedes omitir este paso e ir directamente a la siguiente sección.

Para crear una nueva base de datos desde la línea de comandos, en este ejemplo llamada mydb, utilizas el siguiente comando:

$ createdb mydb

Si esto no produce respuesta, significa que este paso se ha completado con éxito y puedes omitir el resto de esta sección.

Si ves un mensaje similar a:

createdb: command not found

significa que PostgreSQL no se ha instalado correctamente. O bien no se ha instalado en absoluto o la ruta de búsqueda de tu shell no se ha configurado para incluirlo. Intenta llamar al comando con una ruta absoluta en su lugar:

$ /usr/local/pgsql/bin/createdb mydb

La ruta en tu entorno podría ser diferente. Ponte en contacto con tu administrador o comprueba las instrucciones de instalación para corregir la situación.

Otra respuesta podría ser esta:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
        Is the server running locally and accepting connections on that socket?

Esto significa que el servidor no se ha iniciado o no está escuchando donde createdb espera encontrarlo. Una vez más, comprueba las instrucciones de instalación o consulta al administrador.

Otra respuesta podría ser esta:

createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL:  role "joe" does not exist

donde se menciona tu propio nombre de usuario. Esto ocurrirá si el administrador no ha creado una cuenta de usuario de PostgreSQL para ti. (Las cuentas de usuario de PostgreSQL son distintas de las cuentas de usuario del sistema operativo). Si eres el administrador, consulta Chapter 21 para obtener ayuda sobre la creación de cuentas. Tendrás que convertirte en el usuario del sistema operativo bajo el cual se instaló PostgreSQL (normalmente postgres) para crear la primera cuenta de usuario. También podría ocurrir que se te haya asignado un nombre de usuario de PostgreSQL que sea diferente de tu nombre de usuario del sistema operativo; en ese caso, debes utilizar el modificador -U o configurar la variable de entorno PGUSER para especificar tu nombre de usuario de PostgreSQL.

Si tienes una cuenta de usuario pero esta no dispone de los privilegios necesarios para crear una base de datos, verás lo siguiente:

createdb: error: database creation failed: ERROR:  permission denied to create database

No todos los usuarios tienen autorización para crear nuevas bases de datos. Si PostgreSQL se niega a crear bases de datos para ti, entonces el administrador del entorno debe concederte permiso para crear bases de datos. Consulta al administrador si esto ocurre. Si instalaste PostgreSQL tú mismo, debes iniciar sesión para los propósitos de este tutorial con la cuenta de usuario con la que iniciaste el servidor. [1]

También puedes crear bases de datos con otros nombres. PostgreSQL te permite crear cualquier número de bases de datos en un entorno dado. Los nombres de las bases de datos deben comenzar con un carácter alfabético y están limitados a 63 bytes de longitud. Una opción conveniente es crear una base de datos con el mismo nombre que tu nombre de usuario actual. Muchas herramientas asumen ese nombre de base de datos por defecto, por lo que te puede ahorrar algo de escritura. Para crear esa base de datos, simplemente escribe:

$ createdb

Si ya no deseas utilizar tu base de datos, puedes eliminarla. Por ejemplo, si eres el propietario (creador) de la base de datos mydb, puedes destruirla utilizando el siguiente comando:

$ dropdb mydb

(Para este comando, el nombre de la base de datos no toma por defecto el nombre de la cuenta de usuario. Siempre debes especificarlo). Esta acción elimina físicamente todos los archivos asociados a la base de datos y no se puede deshacer, por lo que solo debe hacerse con mucha prudencia.

Puedes encontrar más información sobre createdb y dropdb en createdb y dropdb respectivamente.



[1] A modo de explicación de por qué funciona esto: los nombres de usuario de PostgreSQL son independientes de las cuentas de usuario del sistema operativo. Cuando te conectas a una base de datos, puedes elegir con qué nombre de usuario de PostgreSQL hacerlo; si no lo haces, por defecto tomará el mismo nombre que tu cuenta actual del sistema operativo. Resulta que siempre habrá una cuenta de usuario de PostgreSQL que tenga el mismo nombre que el usuario del sistema operativo que inició el servidor, y también resulta que ese usuario siempre tiene permiso para crear bases de datos. En lugar de iniciar sesión como ese usuario, también puedes especificar la opción -U en todas partes para seleccionar un nombre de usuario de PostgreSQL con el que conectarte.