jueves, 28 de octubre de 2010

PostgreSQL: Ingreso a la base de datos sin clave

El usuario de una base de datos postgres puede desear acceder al motor de base de datos sin tener que ingresar la clave.
Para lograr esto se debe crear el archivo ".pgpass" en el directorio home del usuario que desea ingresar sin la password.
El archivo debe contener líneas con el siguiente formato.
  • hostname:port:database:username:password
En el archivo los campos descritos contienen la siguiente información:
  • hostname -> debe escribir "localhost" si la base de datos se encuentra en el mismo equipo, de encontrarse en otro se debe escribir la ip del equipo o el nombre del equipo en la red.
  • port -> se debe ingresar el numero del puerto de conexión al postgres, por defecto el puerto de conexión de postgres es "5432".
  • database -> se debe escribir el nombre de la base de datos a la cual se desea ingresar.
  • username -> se debe escribir el nombre de usuario con el cual se desea acceder a la base de datos.
  • password -> se debe ingresar la password utilizada por el usuario para ingresar a la base de datos.
Este archivo debe tener estrictamente los permisos de lectura y escritura solo para el usuario y ningún permiso para el grupo u otros. Para revisar los permisos del archivo se puede ejecutar el siguiente comando.
  • ls -la .pgpass
Esto entregara la siguiente línea como respuesta.
  • -rw-------     1     nombreusuario     nombregrupo     tamaño     fechamodificacion     .pgpass
Si los permisos del archivo no están como se observa en la línea anterior, se debe utilizar el siguiente comando para cambiar los permisos del archivo.
  • chmod 600 .pgpass
"Gracias, por compartir tus conocimientos"

miércoles, 27 de octubre de 2010

PostgreSQL: Copiar resultado de un SELECT a un archivo

Existen ocasiones en las que es deseable pasar los resultados de un SELECt a un archivo, postgres permite que realices esta operación. Para esto debes ejecutar el siguiente comando en la consola del postgres.
  • postgres=#copy (select * from nombre_tabla) to 'directorio_name/file_name';
Esto permite copiar todos los datos obtenidos en el select al archivo ubicado en el directorio seleccionado. Para que quede más claro se puede observar el siguiente ejemplo que es ejecutado en la consola de postgres en un equipo con linux instalado.
  • postgres=#copy (select * from alumnos) to '/tmp/datos.txt';

IMPORTANTE:
Es importante recordar algunos comandos de postgres que permiten obtener ayuda.
  • postgres=#\h => permite obtener ayuda de los comandos de postgres.
  • postgres=#\help comando => permite obtener ayuda de un comando especifico de postgres.
  • postgres=#\? => permite obtener ayuda de los comandos del cliente de postgres.
Antes de terminar debo aclarar que "postgres=#" indica que el comando es ejecutado en la consola del postgres.

"Gracias, por compartir tus conocimientos"

martes, 26 de octubre de 2010

PostgreSQL: Modos de ingreso, creación de usuarios y base de datos

Después de instalar PostgreSQL en un equipo con Ubuntu se debe ingresar al sistema con un usuario y a una base de datos existentes en el motor de base de datos, para esto se puede utilizar el siguiente comando.
  • sudo -u usuario psql base_de_datos
Como usuario se debe utilizar postgres y como base de datos postgres, esto permitirá al usuario ingresar al motor de base de datos sin necesidad de una clave más que la del superusuario.

Una vez que se ha ingresado se debe crear un usuario para trabajar con las bases de datos, esto se puede realizar con el siguiente comando.
  • CREATE USER "usuario" WITH CREATEDB CREATEUSER PASSWORD 'password'
Como usuario se debe ingresar el nombre del usuario que se creará y como password la clave de ingreso del usuario, por ejemplo para crear como usuario el mismo de php se debe escribir lo siguiente.
  • CREATE USER "www-data" WITH CREATEDB CREATEUSER PASSWORD 'www-data'
Para crear una base de datos que sea propiedad del usuario que se ha creado se debe utilizar el comando escrito a continuación.
  • CREATE DATABASE nombre_base_datos WITH OWNER = "usuario"
Una vez que el usuario y la base de datos del mismo han sido creados se puede ingresar a PostgreSQL con el siguiente comando.
  • psql -h localhost -U usuario nombre_base_datos
Luego el motor solicita la password ingresada para el usuario en el proceso de creación. Ahora puedes realizar todas las operaciones que desees con la base de datos que acabas de crear.

"Gracias, por compartir tus conocimientos"

lunes, 25 de octubre de 2010

PostgreSQL: Control de Secuencias

En PostgreSQL se pueden crear tablas con "primary key" autoincrementables, como se pude observar en el siguiente ejemplo.

create table alumnos (
   id        SERIAL       not null,
   nombre varchar(255) NULL,
   constraint pk_beneficios primary key (id));


Esto creara una secuencia autoincrementable para la "primary key" como se observa a continuación.

 id      integer        not null valor por omisión nextval('alumnos_id_seq'::regclass)

En ocaciones es necesario observar o modificar los valores de la secuencia, para realizar estas operaciones, se pueden utilizar las siguientes sentencias.

  • "SELECT last_value FROM nombre_secuencia;": Retorna el último valor de la secuencia.
  • "SELECT nextval('nombre_secuencia');": Retorna el valor del último número de la secuencia y lo incrementa en 1.
  • "SELECT setval ('nombre_secuencia', valor);": Asigna el valor a la secuencia, obligando a nextval a retornar (valor + 1).
  • "SELECT setval('nombre_secuencia',valor,true);": Funciona del mismo modo que la sentencia anterior.
  • "SELECT setval('nombre_secuencia',valor,false);": Asigna el valor a la secuencia, obligando a nextval a retornar (valor).
  • "SELECT currval('nombre_secuencia');": Retorna el valor del último número de la secuencia.
El nombre_secuencia puede ser remplazado por "alumno_id_seq" del primer ejemplo, mientras que el valor debe ser un entero mayor que 0 (cero).

"Gracias, por compartir tus conocimientos"