[Lazarus-es] Felicidades y una Consulta

Eduardo Lopez dar_alle en yahoo.com.ar
Vie Ene 18 19:32:06 CET 2008


La forma más sencilla es usar la IP del servidor directamente en los valores de Host del componente de acceso a la BD en tu programa. 
De esta forma, el programa siempre va a buscar la base de datos en esa dirección IP (independientemente si es el servidor o el cliente).

No necesitas realizar ningún cambio de permisos en el archivo mysql.sock; ya que tu aplicación no tiene que "tocar" ningún archivo del equipo servidor.
Las aplicaciones de BD cliente/servidor se comunican a una IP y puerto en particular donde el motor de BD escucha y responde peticiones. 
En qué lugar guarda internamente sus datos y cómo hace para resolver las consultas, es problema del servidor y ningún equipo cliente (por razones de seguridad) debe tener acceso a estas carpetas ni archivos.

Por lo que cuentas veo que (al igual que yo) tienes experiencia en implementaciones con archivos ISAM, donde los programas y datos están en carpetas compartidas donde son accedidos simultáneamente por varios equipos clientes. En ese marco todos los archivos de datos son accedidos a la vez por los clientes conectados.

En el esquema de base de datos cliente/servidor el único que accede al archivo(s) físico(s) de datos es el programa servidor y sólo él sabe donde están los mismos. Para hacer una analogía es un tipo en un mostrador, donde los clientes le hacen pedidos y él les entrega lo solicitado en el mostrador, pero nadie más que él toca la mercadería en depósito y sólo él sabe cómo organizarla y estibarla.

Saludos cordiales.
Eduardo.

----- Mensaje original ----
De: José Luis Vassallo <jose.vassallo en gmail.com>
Para: Spanish version of Lazarus List <lazarus-es en lazarus.freepascal.org>
Enviado: jueves 17 de enero de 2008, 23:43:19
Asunto: Re: [Lazarus-es] Felicidades y una Consulta

Gracias Eduardo, estoy avanzando a full gracias a vos.
Tarde en responder porque se me destrozo el linux y reinstalar todo y hacerlo funcionar me hizo perder un monton de tiempo. Los componentes los logre instalar tantos los rx como los zeozde manejo de base de datos.

Use como me indicaste el nfs para acceder a la carpeta desde otra pc (ya que me monto una mini red en casa un amigo). Mi pc es el server y tengo otra pc que es la workstation.
Comparto la aplicacion y cuando intento acceder al server me salta un error "sql error:can't connect loca mysql server throught socket '/var/mysql/mysql.sock(2)', si ejecuto en la workstation el mysql me salta error porque no tiene la base. El error se crea prque tanto el server como la estacion tienen como host "localhost" 
127.0.0.1 para solucionar esto yo tendria que crear una en el servidor un nuevo host llamado por ej. "ControlStockHost" con una ip. x.x.x.x y desde la workstation configurar el acceso a esta? tengo que darles acceso al archivo "
mysql.sock" del servidor? 
Disculpa mis preguntas y mis molestas master.

El día 11/01/08, Eduardo Lopez <
dar_alle en yahoo.com.ar> escribió:José Luis Vassallo escribió:
> Buenas y sigo yo el pesado. :-)

>
> 1) Logre instalar el componente rxlib y anda casi todo bien, el
> problema es que en el form donde puse el componente antes de salir de
> el cuando quiero cerrar el query me da el error "Project raised

> exception class ¿EDatabaError' with message: Operation cannot be
> perfrmed on an inactive dataset", vere si cambiando algunas opciones
> logro hacer que desaparezca el error. Me despliega bien la información

> eso si.
> 2) Perdon por molestar tanto con este tema de la red.
> En mi pc lo corro sin problemas, ya que tengo tanto lazarus como el
> mysql en forma local en mi suse. Pero en lo de mi cliente tengo el

> servidor y las estaciones de trabajo (todas con suse 10.3) y no se
> como armar la red. En el servidor esta el mysql corriendo sin
> problemas ahora mi problema es el sistema que desarrollo en lazarus lo

> tengo que tener en cada pc (si es asi como desde la aplicacion la
> configuro para que acceda a la base de datos del servidor y como
> configuro la red)? o si tiene que estar mi aplicacion dentro del

> servidor (en un directorio accesible por todos)?
Disculpame la demora en responder, pero estuve unos días de vacaciones. :-)

Respecto del punto 1) sólo puedo decirte que es probable que al cerrar
el form estés haciendo alguna operación (tipo commit) pero el dataset

está cerrado. Sólo queda revisar con detalle.

Para el punto 2) paso a detallarte: Ambas opciones son posibles:
a) Tener los binarios en un servidor junto con sus archivos de
configuración (leído por todos los clientes), con un directorio

compartido por NFS.
b) Tener los binarios en cada equipo  sus archivos de configuración
leído sólo por el usuario.

En ambos casos las bibliotecas del cliente mysql se deben instalar en
todos los equipos clientes. En el punto a) la actualización del sistema

es más sencilla, ya que actualizando el server, todos los clientes
usarán la versión disponible, en b) hay que actualizar equipo por equipo.

Actualmente, en tu equipo de desarrollo tienes configurado los

componentes de acceso a mysql con "localhost", "tu_base_de_datos",
"usuario", "contraseña"
Lo que tienes que hacer es,  leer estos valores de un archivo de
configuración (que puede ser en formato INI o XML) y en la creación del

Form asignarle las propiedades correspondientes al componente.

procedure TForm1.FormCreate(Sender: TObject);
begin
 MySQL50Connection1.hostname := 'servidor';
end;

Por ejemplo, para leer los datos de un archivo XML de configuración

puedes usar la unit XMLCfg:

var
cfg: TXMLConfig;
ArchivoConf:string;
begin
  ArchivoConf := 'misistema.conf';
  cfg := TXMLConfig.Create(nil);
  cfg.Filename := ArchivoConf;
  LabeledEdit_servidor.Text := 
cfg.GetValue('BaseDatos/NombreServidor','');
  LabeledEdit_base.Text := cfg.GetValue('BaseDatos/BaseDatos','');
  LabeledEdit_usuario.Text := cfg.GetValue('BaseDatos/Usuario','');

  cfg.free;
end;

Depende de tu aplicación y del nivel de seguridad que quieras darle,
puedes guardar el usuario y contraseña en el archivo XML o bien pedirla
en una pantalla de login.

El archivo de configuración puede ser guardado donde quieras: en

/etc/tu_archivo.conf (sólo modificable por root y válido para todos los
usuarios del equipo) o en cada home del usuario, donde tendrás acceso
completo al mismo y podrás utilizarlo además para guardar cualquier

preferencia que desees.

De esta forma podrás generar un binario único que te funcionará tanto en
tu equipo de desarrollo como en el del usuario final de la aplicación.

Saludos cordiales.
Eduardo López.


_______________________________________________
Lazarus-es mailing list
Lazarus-es en lazarus.freepascal.org

http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es





-----Sigue archivo adjunto en el mensaje-----

_______________________________________________
Lazarus-es 
mailing 
list
Lazarus-es en lazarus.freepascal.org
http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es







      Yahoo! Encuentros.

Ahora encontrar pareja es mucho más fácil, probá el nuevo Yahoo! Encuentros http://yahoo.cupidovirtual.com/servlet/NewRegistration
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20080118/fda15569/attachment-0001.html>


More information about the Lazarus-es mailing list