Mover el repositorio de archivos de MySQL 5.x en FreeBSD 7

La instalación ubica por defecto al repositorio de archivos del motor de base de datos en /var/db/mysql. Esta ubicación no es necesariamente la idónea, para nuestro caso no disponemos del espacio suficiente en esa partición y es por eso que es necesario moverla.

Los ajustes siguientes son los necesarios para transladar el repositorio de archivos de MySQL a /home/datos_mysql.

# /usr/local/etc/rc.d/mysql-server stop
# mv /var/db/mysql /home/datos_mysql
# vi /etc/rc.conf
mysql_dbdir=”/home/datos_mysql”

Instalación de MySQL 5.x en FreeBSD 7

Obtiene los paquetes necesarios de Internet, los compila e instala.

# cd /usr/ports/mysql50-server/
# make install clean

Establece el directorio de datos inicial y le asigna los permisos apropiados.

# /usr/local/bin/mysql_install_db

Establece un archivo de configuración inicial basado en los archivos de demostración.

# cp /usr/local/share/mysql/my-medium.cnf /var/db/mysql/my.cnf

Existen varios archivos base de configuración en la ruta /usr/local/share/mysql para elegir según la configuración de hardware del servidor y su finalidad.

my-small.cnf Para sistemas de bajos recursos con 64MB de RAM o menos.
my-medium.cnf Para sistemas hasta con 128MB de RAM, ideal para servidor web
my-large.cnf Para sistemas con 512MB de RAM, ideal para servidor MySQL dedicados
my-huge.cnf Para sistemas con 1GB o 2GB de RAM, ideal para datacenters.

Actualiza el usuario y grupo propietario de los archivos.

# chown -R mysql:mysql /var/db/mysql

Se inicia manualmente el motor de base de datos para verificar que todo esté funcionando correctamente.

# /usr/local/bin/mysqld_safe --user=mysql &

Se modifica la contraseña del usuario administrador (root). Modifique la cadena rootpassword por el valor que considere apropiado.

# /usr/local/bin/mysqladmin -u root password 'rootpassword'

Habilita el inicio automático del motor de base de datos al inicio del servidor.

# vi /etc/rc.conf

    mysql_enable=”YES”

Si se desea desactivar el acceso externo al servidor de bases de datos se deberá realizar la siguiente modificación. Esto es útil cuando sólo nos interesa permitir conexiones desde el servidor de páginas que se encuentra ubicado en el mismo equipo y no desde el exterior.

# vi /var/db/mysql/my.cnf

(quitar el comentario)

skip-networking

Reiniciar el servicio de MySQL.

# /usr/local/etc/rc.d/mysql-server restart

Revise el archivo de registro por mensajes de error o de advertencia que le permitan depurar cualquier problema existente en el motor de base de datos.  El archivo de registro se encuentra ubicado en /var/db/mysql y su nombre corresponde al siguiente formato: hostname.domainname.err, para este artículo será entonces: webserver.mydomain.com.err.

Instalación rápida de PostgreSQL para Windows

Los siguientes son los pasos seguidos para instalar PostgreSQL bajo Windows en una unidad US

1. Descargar y descomprimir el archivo postgresql-8.3.1-1-binaries-no-installer.zip.

2. Mover el directorio pgsql a la unidad USB, g: para este ejemplo.

3. Crear el directorio g:pgsqldata.

4. Crear el repositorio de datos inicial.

dos> g:pgsqlbininitdb -D g:pgsqldata

5. Editar el archivo de configuración de acceso para permitir las conexiones externas.

dos> notepad g:pgsqldatapg_hba.conf

# Allow any user on the local system to connect to any database under
# any database user name using Unix-domain sockets (the default for local
# connections).
#
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         all                               trust

# The same using local loopback TCP/IP connections.
#
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
host    all         all         127.0.0.1/32          trust

host    all         all         0.0.0.0/0             md5

6. Editar el archivo de configuración de la base de datos para permitir conexiones a través de TCP/IP y SSL.

dos> notepad g:pgsqldatapostgresql.conf

listen_addresses = '*'
authentication_timeout = 1min		# 1s-600s
ssl = on				# (change requires restart)
ssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH'	# allowed SSL ciphers

7. Crear la llave primaria del servidor (server.key) y el certificado SSL (server.crt). Para esto es necesario contar con la distribución de OpenSSL y su directorio g:OpenSSLbin (o donde haya sido instalado) incluído en la variable de ambiente PATH. Tengase en cuenta que este paso es opcional y sólo deberá ejecutarse si se desea establecer el soporte para conexiones SSL con el motor de base de datos (ver parámetro ssl en el paso #6).

dos> cd g:pgsqldata
dos> openssl req -new -text -out server.req
PEM pass phrase: ***CLAVESECRETA***
Country Name (2 letter code) [AU]: CO
State or Province Name (full name) [Some-State]: Caldas
Locality Name (eg, city) []: Manizales
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Personal Development
Organizational Unit Name (eg, section) []: Sistemas
Common Name (eg, YOUR name) []: jorgeivan
Email Address []: jimezam@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Ténganse en cuenta las siguientes consideraciones para especificar los datos mencionados anteriormente.

  1. La frase PEM (***CLAVESECRETA***) es una contraseña de seguridad del certificado, elíjala de acuerdo a sus criterios de seguridad.
  2. Los valores de los campos Country Name, State Name, Locality Name, Organization Name, Organizational Unit Name e Email Address son informativos y deben personalizarse según su propio contexto.
  3. El campo Common Name debe corresponder con el hostname de la máquina que tendrá el certificado (importante).
  4. El Challenge Password y el Optional Company Name pueden obviarse (dejarse en blanco).

La llave generada se encuentra protegida con contraseña, para removerla y permitir el inicio automático del motor de base de datos junto con el sistema operativo se debe realizar la acción siguiente.

dos> openssl rsa -in privkey.pem -out server.key

PEM pass phrase: ***CLAVESECRETA***

dos> del privkey.pem

Para firmar (self-signed) el certificado recién creado ejecutar la acción siguiente.

openssl req -x509 -in server.req -text -key server.key -out server.crt

8. Iniciar el motor de base de datos.

dos> postgres -i -D g:pgsqldata

Si se desea redireccionar los mensajes de la base de datos a un archivo de log se deben agregar las siguientes modificaciones.

dos> postgres -i -D g:pgsqldata >logfile 2>&1

Si se desea enviar el proceso del motor de base de datos a background se debe anteponer el comando start de Windows.

dos> start postgres -i -D g:pgsqldata >logfile 2>&1

9. Modificar la contraseña de acceso del usuario de administración del motor de base de datos.

dos> psql -h 127.0.0.1 -c "ALTER USER USUARIO WITH PASSWORD 'CONTRASEÑA'" -d template1

Téngase en cuenta que debe reemplazarse a USUARIO con el nombre de usuario bajo el cual se ejecuta la base de datos, el mismo con el que se ejecutó initdb y postgres, así como CONTRASEÑA con la contraseña escogida para ese usuario.

10. Crear una base de datos.

dos> createdb.exe base_de_datos

11. Prueba de conexión a la base de datos.

dos> psql -W -U USUARIO base_de_datos

Enlaces de interés:

Aplicación SimpleAccesoDatosWs 0.1

El día de hoy desarrollé una aplicación extremadamente simple para obtener de manera rápida y fácil información de ciertas tablas del sistema de información de un cliente. La idea era hacer una aplicación muy simple pero flexible que permitiera incorporar nuevas consultas con relativa facilidad. El objetivo general era evitar la solicitud de permitir la conexión directa al motor de base de datos desde las oficinas del cliente hasta el servidor de producción para obtener la información y actualizar sus bases de datos internas. Está desarrollada en PHP utilizando la librería NuSOAP.

En el servidor donde se encuentra el servicio web se configuran cada uno de los servicios (orígenes de datos), estos se relacionan con una consulta SQL y con unas etiquetas que se reemplazarán dinámicamente según la información que se suministre durante el llamado.

El cliente para consumir el servicio debe especificar el URL del servicio web, el nombre del servicio solicitado y opcionalmente los parámetros a enviarse para personalizar la ejecución de la consulta SQL en la base de datos. El resultado obtenido del servidor es almacenado en el cliente como un archivo CSV. El cliente accede al servicio web a través de un script de línea de comando (CLI).

Para restringir el acceso al servicio web, el servidor puede limitar los rangos de direcciones IP desde los cuales es posible acceder a él.

Como mencioné, la aplicación es muy sencilla pero puede ser de utilidad para dar una solución rápida y simple a una situación similar o para basarse en ella y crear una solución mas elaborada y elegante.

Para mas información acerca del uso de la aplicación por favor consultar el Manual de usuario.

Enlace:

Acceso a MSSQL Server desde PHP en un servidor Linux

El día de hoy realicé la actualización del servidor de desarrollo (OpenSuse 10.2) para soportar las conexiones a un servidor de bases de datos MS SQL Server 2005. El servidor de bases de datos se encuentra en la red privada (192.168.1.5). El servidor de desarrollo tiene dos interfaces, una de ellas es privada también (192.168.1.3). La versión de PHP que se encuentra actualmente instalada es la 5.2.0.

Actualicé algunos paquetes que eran necesarios para instalar el software FreeTDS.

# rpm -i readline-devel-5.1-55.i586.rpm
# rpm -i  libxml2-devel-2.6.26-26.i586.rpm
# rpm -i  libapr1-devel-1.2.7-23.i586.rpm
# rpm -i  libapr-util1-devel-1.2.7-26.i586.rpm
# rpm -i  apache2-devel-2.2.3-20.i586.rpm

Otros paquetes que puedan llegar a necesitarse se pueden descargar de la siguiente dirección.

http://download.opensuse.org/distribution/10.2/repo/oss/suse/i586/.

Descargué y descomprimí la última versión de FreeTDS.

# wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
# tar zxvf freetds-stable.tgz
# cd freetds-0.64

Se compila e instala en el directorio /usr/local/freetds-0.64 con soporte para la versión 8.0 del protocolo. Para consultar información adicional acerca del protocolo consulte la dirección siguiente: http://www.freetds.org/userguide/choosingtdsprotocol.htm.

# ./configure --prefix=/usr/local/freetds-0.64 --with-tdsver=8.0
# make
# make install

Creé un enlace dinámico desde /usr/local/freetds al directorio de instalación para facilitar el manejo de diferentes versiones en un futuro cercano cuando vaya a actualizar la librería.

# ln -s /usr/local/freetds-0.64 /usr/local/freetds

Edité el perfil general de los usuarios para añadir al final de este información de las variables de ambiente de FreeTDS .

# vi /etc/profile
###################################################
SYBASE=/usr/local/freetds
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$SYBASE/lib
export SYBASE LD_LIBRARY_PATH
###################################################

Descargué y descomprimí el código fuente de la versión de PHP instalada. Para descargar versiones históricas de PHP visite el siguiente enlace: http://www.php.net/releases/.

# wget http://museum.php.net/php5/php-5.2.0.tar.gz
# tar zxvf php-5.2.0.tar.gz
# cd php-5.2.0

Se crearon los scripts de compilación para realizar una instalación temporal en /root/tmp/php-5.2.0/installation y de allí obtener el módulo dinámico de soporte para MSSQL.

# SYBASE=/usr/local/freetds
# LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$SYBASE/lib

# export SYBASE LD_LIBRARY_PATH# ./configure --with-apxs2=/usr/sbin/apxs2 
--with-mssql=shared,$SYBASE 
--with-sybase=$SYBASE 
--with-libxml-dir=/usr/lib/ 
--prefix=/root/tmp/php-5.2.0/installation
# make

# make install

Se copió el módulo recién generado a la ubicación donde PHP almacena sus propios módulos.

# cp ./installation/modules/mssql.so /usr/lib/php5/extensions/
# chmod -x  /usr/lib/php5/extensions/mssql.so

Se creó el archivo mssql.ini para activar el módulo.

# vi /etc/php5/conf.d/mssql.ini
extension=mssql.so

Se reinicio el servicio de Apache2 para refrescar los cambios recién hechos.

# rcapache2 restart

Al consultar la información resultante de phpinfo ya aparece la sección de MSSQL.

Para realizar una prueba fiable de conexión entre PHP y MSSQL puede utilizar el script adjunto a continuación editando adecuadamente la información de conexión al inicio de este.

Enlace: prueba_mssql.php