Creando una base de datos

La primer prueba para ver si puede acceder al servidor de base de datos es probar crear una base de datos. Un servidor PostgreSQL en ejecución puede manejar muchas bases de datos. Tipicamente, una base de datos separada es usada para cada proyecto o para cada usuario.

Posiblemente, el administrador de su sitio ya haya creado una base de datos para que la use. Debería haberle dicho cual es el nombre de la base de datos. En este caso puede omitir este paso y pasar a la sección siguiente.

Para crear una nueva base de datos, llamada mibd en este ejemplo, puede usar el siguiente comando:

$ createdb mibd

Si esto no produce respuesta es porque fue exitoso u puede omitir el resto de esta sección.

Si ve un mensaje similar a:

createdb: command not found 

(comando no encontrado). entonces PostgreSQL no ha sido instalado correctamente. O no fue instalado del todo o el camino de búsqueda de su interprete de comandos no está ajustado para incluirlo. En este caso intente llamar el comando con la ruta absoluta:

$ /usr/local/pgsql/bin/createdb mibd

La ruta en su sitio puede ser diferente. Contacte con su administrador o verifique las instrucciones de instalación para corregir la situación.

Otra respuesta podría ser:

createdb: could not connect to database postgres: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

(no se pudo conectar a la base de datos postgres...). Esto significa que el servidor no ha sido iniciado, o no se inició donde createdb lo esperaba. Nuevamente, revise las instrucciones de instalación o consulte al administrador.

Otra respuesta podría ser:

createdb: could not connect to database postgres: FATAL:  role "joe" does not exist

(no se puede conectar a la base de datos postgres: FATAL: el rol "juan" no existe). donde se mencionará su nombre de usuario unix. Esto pasará si el administrador no ha creado una cuenta de usuario para usted. (Las cuentas de usuario de PostgreSQL son distintas que las del sistema operativo.) Si es el administrador, vea  Capitulo 20 para ayuda creando usuarios. Necesitará convertirse en el usuario del sistema operativo bajo el cual se instaló PostgreSQL (usualmente postgres) para crear la primer cuenta de usuario. También puede ser que se le haya asignado un nombre de usuario PostgreSQL que es diferente al nombre del usuario del sistema operativo; en este caso debe usar la opción -U o establecer la variable de ambiente PGUSER para especificar su nombre de usuario PostgreSQL.

Si tiene una cuenta de usuario pero no tiene los privilegios requeridos para crear una base de datos, verá lo siguiente:

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

(falló la creación de la base de datos: ERROR: permiso negado para crear la base de datos). No todos los usuarios están autorizados para crear nuevas bases de datos. Si PostgreSQL se reusa a crear una base de datos por usted, el administrador del sistema necesita otorgarle permisos para crear bases de datos. Consulte con su administrador si esto ocurre. Si instaló PostgreSQL por si mismo, debería poder ingresar, para los propósitos de este tutorial, bajo la cuenta de usuario con que inicio el servidor. [1]

También puede crear la base de datos con otros nombres. PostgreSQL permite crear cualquier número de bases de datos en un sitio dado. Los nombres de las bases de datos deben tener el primer carácter alfabético y limitarse a una longitud de 63 caracteres. Una elección conveniente es crear una base de datos con el mismo nombre que su actual nombre de usuario. Muchas herramientas asumen que dicho nombre es el predeterminado, por lo que se puede ahorrar cierto tipeo. Para crear dicha base de datos, simplemente escriba:

$ createdb

Si no desea usar más su base de datos, puede eliminarla. Por ejemplo, si es el propietario (creador) de la base de datos mibd, puede destruirla usando el siguiente comando:

$ dropdb midb

(Para este comando, no se toma por defecto el nombre de la cuenta de usuario para el nombre de la base de datos. Siempre debe especificarlo.) Esta opción remueve físicamente todos los archivos asociados con la base de datos y no puede ser deshecha, por lo que solo debe ser realizada con un gran nivel de previsión.

Más sobre createdb y dropdb puede encontrarse en  createdb y  dropdb respectivamente.

Notas

Nota 1

Como explicación de porque esto funciona: los nombres de usuario PostgreSQL están separados de las cuentas de usuario del sistema operativo. Cuando se conecta a la base de datos, puede elegir como que nombre de usuario PostgreSQL conectarse; si no lo hace, lo predeterminado será el mismo nombre que la cuenta del sistema operativo. Como ocurre, siempre habrá una cuenta de usuario PostgreSQL que tiene el mismo nombre que el usuario del sistema operativo que inició el servidor, y tambien ocuerre que dicho usuario tendrá permisos para crear bases de datos. En vez de ingresar como dicho usuario, también puede especificar la opción -U en todos lados para seleccionar un nombre de usuario PostgreSQL para usar al conectarse.