Showing posts with label PostgreSQL. Show all posts
Showing posts with label PostgreSQL. Show all posts
Thursday, October 18, 2007
PHP ERROR: Call to undefined function pg_connect()
Cuando este error sucede quiere decir que no tienes instalado la extension de PostgreSQL-PHP que permite hacer consultas a bases de datos PostgreSQL desde PHP.
Para resolverlo en Ubuntu se debe instalar el paquete "php5-pgsql".
En linea de comandos es asi:
$sudo aptitude install php5-pgsql
Despues procedemos a reinicar el servidor apache de la siguiente forma:
$sudo aptitude /etc/init.d/apache2 restart
Listo, ahora reintenta otra vez usar la aplicacion PHP que te arrojo la falla.
Friday, September 21, 2007
Solucion: ERROR: language "plpgsql" does not exist
PostgreSQL puede ser programado con muchos lenguages y el mas usado es PL/pgSQL pero no siempre se instala por defecto. Para corregir este problema en Ubuntu Linux se realizan los siguientes pasos:
1. Localizar el archivo plpgsql.so
Este archivo es una libreria de funciones que ejecuta el codigo PL/pgSQL, para localizarlo hacemos lo siguiente:
$sudo updatedb
$locate plpgsql.so
Con estas instrucciones Linux localizara el archivo y nos dara la ruta de la libreria, en mi caso para Ubuntu 7.04 y PostgreSQL 8.2 la ruta seria la siguiente:
/usr/lib/postgresql/8.2/lib/plpgsql.so
2. Instalar el handler y lenguage.
Una vez localizada la ruta de la libreria handler del lenguage(ver paso 1) se procede a crear el handler en PostgreSQL, para esto se necesita una conexion a PosgreSQL que puede hacerse con pgadmin3 o la utilidad de linea de comandos psql.
Envie a PostgreSQL los siguientes comandos:
CREATE FUNCTION plpgsql_call_handler () RETURNS OPAQUE AS '/usr/lib/postgresql/8.2/lib/plpgsql.so' LANGUAGE 'C';
CREATE LANGUAGE 'plpgsql' HANDLER plpgsql_call_handler
LANCOMPILER 'PL/pgSQL';
Listo, con esto ya creo el lenguage PL/pgSQL correctamente. Intente ejecutar nuevamente el script que genero el error original.
Nota: la creacion o configuracion de cada lenguage de PostgreSQL se hace por base de datos, no en el servidor o en todas las bases de datos al mismo tiempo. Si necesita crear el leguage en varias bases de datos debe ejecutar el Paso 2 en cada base de datos o ejecutar el Paso 2 en alguna de las plantillas(template0,template1,etc) y despues crear las otras bases de datos futuras basadas en esta plantilla.
Consulte tambien Acerca de PL/pgSQL
[Actualizacion-28/09/2007]
El error tambien puede ocurrir en Windows con el instalador por defecto de PostgreSQL, el handler puede que este creado pero no el lenguage. Para solucionarlo ingrese con el usuario POSTGRES en la base de datos donde necesita el lenguage y ejecute el siguiente script:
CREATE TRUSTED PROCEDURAL LANGUAGE 'plpgsql'
HANDLER plpgsql_call_handler
VALIDATOR plpgsql_validator;
Si el handler no existe se debe crear usando el procedimiento mencionado mas arriba para Linux pero aputando al archivo plpgsql.dll(que normalmente se encuentra en "C:\Archivos de programa\PostgreSQL\8.2\lib" si no se cambio la ruta de instalacion por defecto).
Tuesday, September 11, 2007
Cambiar Contraseña de Usuario 'postgres' en Ubuntu
En un post anterior ya he comentado que el instalador de PostgreSQL para Ubuntu asigna una contraseña aleatoria al usuario 'postgres' y que esta debe ser cambiada manualmente post-instalación. Esto no es un error en el instalador, es una comportamiento de seguridad por defecto del instalador.
Cambiano la contraseña
Para cambiar la contraseña en una instalación por defecto o porque simplemente se olvido la contraseña y no existen mas usuarios se hace lo siguiente en una terminal:
1) Impersonar al usuario 'postgres'.
$sudo su postgres
2) Ejecutar la utilidad psql
$psql
En este momento se esta conectando a la base de datos usando el usuario 'postgres', con este usuario puede cambiar contraseñas de muchos usuarios incluso del mismo 'postgres'. Ahora vamos a cambiar la contraseña, ejecute sobre la linea de comandos actual la siguiente secuencia donde 'passwd' es la contraseña nueva(debe utilizarse comillas simples):
alter user postgres with password 'passwd';
Si el programa response con el mensaje 'ALTER ROLE' la contraseña se ha cambiado correctamente.
Para salir se la utilidad escriba:
\q
para salir del usuario 'postgres' escriba lo siguiente:
exit
Listo. La contraseña se ha cambiado correctamente.
Probando la conexion
Para probar la conexion se puede utilizar la misma utilidad 'psql' de la siguiente forma:
psql -U postgres -W
Presione ENTER e introduzca la nueva contraseña(usted debio haberla cambiado en el ejemplo anterior, si no lo hizo la contraseña es 'passwd').
Etiquetas:
LINUX,
PostgreSQL,
Seguridad,
UBUNTU
Instalar PostgreSQL en Ubuntu Linux
Instalacion
Instalar Postgresql en Ubuntu es bastante sencillo, yo uso Ubuntu 7.04 e instalo postgresql desde los repositorios oficiales que tienen PostgreSQL 8.2. Para instalar se puede utilizar synaptic e instalando el paquete llamado 'postgresql-8.2' o usando aptitude en una terminal.
Para instalar abra un terminal y ejecute el siguiente comando:
$sudo aptitude install postgresql-8.2
Escriba 'Y'(si) para descargar e instalar automaticamente y cuando finalice el proceso postgresql estara correctamente instalado pero no se inicia automaticamente, debe iniciarse el servicio manualmente.
Iniciando el Servicio PostgreSQL Manualmente
Esta tarea puede realizarse usando la interfaz grafica o con una terminal:
Iniciar usando Servicios de Ubuntu:
Hacer click en el menu System->Administration->Services y marcar el servicio Database Server(postgresql-8.2) como se muestra a continuación:
Con esta acción se iniciara la base de datos.
Iniciar usando usando Terminal:
Abra una terminal y ejecute el siguiente comando:
$sudo /etc/init.d/postgresql-8.2 start
Listo, ya se ha instalado e iniciadio la Base de Datos. Existe un Pequeño problema que realmente no es un problema, es una caracteristica de Seguridad del Paquete de Instalacion de Ubuntu que no revela cual es la contraseña que se le asigno al usuario 'postgres', sin embargo, he creado la siguiente guia para ayudar a solventarlo:
Cambiar la contraseña del usuario 'postgres'

Tuesday, August 21, 2007
Conexion remota PostgreSQL y Firewall iptables
En estos dias tenia un problema con postresql 8.1, no me podia conectar remoto fuera de la red local y la solucion es modificar el postgresql y agregar unas reglas al iptables. Esto fue lo que hice para permitir la conexion remota:
Nota: todos las rutas a los archivos de configuracion excepto el comando para modificar las reglas del iptables estan adaptadas a Debian/Ubuntu.
1. Archivo /etc/postgresql/8.1/main/postgresql.conf:
La propiedad listen_addresses y port deben estar de la siguiente forma:
listen_addresses = '*'
port = 5432
2. En el archivo /etc/postgresql/8.1/main/pg_hba.conf quite el comentario(#) a la siguiente linea en la seccion IPv4:
host all all 0.0.0.0/0 md5
3. Ejecute los siguientes comandos en la terminal
sudo iptables -t filter -A OUTPUT -p tcp --sport 5432 -j ACCEPT
sudo iptables -t filter -A INPUT -p tcp --sport 5432 -j ACCEPT
4. Reiniciar el postgresql
sudo /etc/init.d/postgresql-8.1 restart
Si no existe un DROP en el iptables que contrareste el efecto de la nueva regla aplicada, ya deberias poder conectarte de forma remota.
Subscribe to:
Posts (Atom)