03.-Creando una Base de Datos

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

Posiblemente, el administrador de tu sitio ya ha creado una base de datos para nuestro uso. En ese caso puedes omitir este paso y saltar a la siguiente sección.

Para crear una nueva base de datos, en este ejemplo nombrada mydb, se utiliza el siguiente comando:

$ createdb mydb

Si esto no produce respuesta, este paso fue exitoso y se puede saltar el resto de esta sección.

Si ves un mensaje similar a:

createdb: comando no encontrado

Entonces PostgreSQL no se instaló correctamente. O no se instaló en absoluto o la ruta de búsqueda de su shell no estaba configurada para incluirlo. Llamaremos al comando con un camino absoluto en su lugar:

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

El camino en nuestro sitio podría ser diferente (/usr/bin/createdb mydb en archlinux). El administrador del sitio o las instrucciones de instalación puede ayudarnos a 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 inició, o no está escuchando dónde createdbespera contactarlo. Una vez más, revise las instrucciones de instalación o consulte 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 nuestro propio nombre de inicio de sesión. Esto sucederá si el administrador no ha creado una cuenta de usuario de PostgreSQL para nosotros. (Las cuentas de usuario de PostgreSQL son distintas de las cuentas de usuario del sistema operativo.) Si somos el administrador, consultar el capítulo 22 para ayudar en la creación de cuentas. Debemos convertirnos en el usuario del sistema operativo bajo el cual PostgreSQL fue instalado (generalmente postgres) para crear la primera cuenta de usuario. También podría ser que se nos asignó un nombre de usuario de PostgreSQL que es diferente de nuestro nombre de usuario de nuestro sistema operativo; en ese caso necesitamos utilizar la opción -U o configurar la variable de entorno PGUSER para especificar nuestro nombre de usuario de PostgreSQL.

Si tenemos una cuenta de usuario pero no tiene los privilegios necesarios para crear una base de datos, veremos 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 nosotros, entonces el administrador del sitio necesita concedenos permiso para crear bases de datos. Consultaremos a nuestro administrador del sitio si esto ocurre. Si hemos instalado PostgreSQL nosotros mismos, entonces debemos iniciar sesión bajo la cuenta de usuario con la que iniciamos el servidor.

También podemos crear bases de datos con otros nombres. PostgreSQL nos permite crear cualquier número de bases de datos en un sitio determinado. Los nombres de la base de datos deben tener un primer carácter alfabético y se limitan a 63 bytes de longitud. Una opción conveniente es crear una base de datos con el mismo nombre que nuestro nombre de usuario actual. Muchas herramientas asumen ese nombre de base de datos como predeterminado, por lo que puede ahorrarnos algo de escritura. Para crear esa base de datos, simplemente escribiremos:

$ createdb

Si ya no queremos usar tu base de datos, podemos eliminarla. Por ejemplo, si somos el propietario (creador) de la base de datos mydb, podemos destruirla usando el siguiente comando:

$ dropdb mydb

(Para este comando, el nombre de la base de datos no predetermina el nombre de la cuenta de usuario. Siempre tienes que especificarlo.) Esta acción elimina físicamente todos los archivos asociados con la base de datos y no se puede deshacer, por lo que debe hacerse con mucho cuidado.

Más sobre createdby dropdbse puede encontrar en createdb y dropdb respectivamente.


Nota aclaratoria: Los nombres de usuario están separados de las cuentas de usuario del sistema operativo. Cuando nos conectamos a una base de datos, se puede elegir con qué nombre de usuario de PostgreSQL nos conectamos; si no lo hacemos, se predeterminará al mismo nombre de nuestra cuenta actual del sistema operativo. Sucede 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 sucede que ese usuario siempre tiene permiso para crear bases de datos. En lugar de iniciar sesión como ese usuario también se puede especificar opción -Uopción en todas partes para seleccionar un nombre de usuario de PostgreSQL con el que conectarse.