[successivo] [precedente] [inizio] [fine] [indice generale]


Capitolo 18.   Interbase

Interbase è un database relazione della INPRISE (http://www.inprise.com/) azienda legata a Borland. Dalla versione 6.0 è stata rilasciata licenza Open Source per chiunque voglia sviluppare ulteriormente le caratteristiche di questo prodotto. Subito il popolo del free software ha ricompilato i sorgenti e creato una versione parallela all'interbase 6.0 chiamata firebird e coordinata dalla IBPHOENIX (http://www.ibphoenix.com). Comparando Interbase ad altri prodotti Open Source tipo MySQL o meglio ancora PostgreSQL, non possiamo che apprezzarne le caratteristiche di velocità  aderenza allo standard SQL-92 ed anche al nuovo SQL-3.

La Inprise distribuisce due versioni funzionati, una basata sul kernel classico (CS), una basata su kernel superserver (SS). Consiglio vivamente di installare la seconda versione, infatti a lavora a thread, diversamente dalla prima che lavaro a processi. I "difetto" di "origine" si notano, ricordiamo che Interbase fino alla versione 5.6 era proprietario e multipiattaforma, e l'avvio in una macchina con Linux Redhat 7, posso garantire che non è alla portata dell'utente medio.

Nonostante la presenza di file rpm, questi risultano incompleti e necessitano di supporto manuale. Si tratta di un prodotto UniX più che di un prodotto LiNUX. I forum ed il supporto tecnico non sempre lavorano come dovrebbero. Mezza giornata di lavoro e si aggiusta tutto! Difetti di gioventù esclusi, prendete in seria considerazione l'utilizzo di questa piattaforma di sviluppo. Molte utility di corredo, a volte a pagamento, sono create per ambiente Windows, però sono interfacce clients il server può essere installato senza difficoltà  in ambiente LiNUX.

18.1   Installazione

I manuali in formato PDF liberamente scaricabili da Internet sono completi, e spiegano come installare e configurare Interbase sia su piattaforma Windows che UniX. Per questo motivo sono spessi, e scoraggiano l'utente a sfogliarli. Le informazioni sono sparse per questo vanno esaminati attentamente prima di procedere all'avvio del server di database. La prima parte dei vari capitoli riguarda l'uso in ambiente Windows, successivamente viene spiegata la stessa procedura per ambiente UniX (generalmente SUN).

Installare il pacchetto rpm della versione super server. Creare quindi l'utente interbas.

# useradd -d /opt/interbase -u 28 interbas [Invio]

Anche se può risultare una operazione non necessaria è vivamente consigliata per evitare che il server SQL si avvii con i permessi di amministratore, deleterio per la sicurezza in un network. La seconda operazione consiste nel modificare i permessi del directory dove viene installato interbase, questo directory è /opt/interbase.

# cd /opt/interbase [Invio]# chown -R interbas.interbas [Invio]

Ai file e directory presenti viene assegnato come proprietaro l'utente interbas. Interbase usa le variabili ISC_USER ed ISC_PASSWORD per individuare l'utente e relativa password per l'accesso al database. L'amministratore viene individuato nell'utente SYSDBA e la password inziale è masterkey. Per avviare e fermare il server SQL dobbiamo quindi servirci di questo super utente. INPRISE non ha fornito un file da inserire in /etc/rc.d/init.d per far partire il servizio, lasciando ad una pagina del manuale un file di script da copiare. Questo file può andar bene per una SUN, certo per LiNUX ha bisogno di alcune modifiche, per questo ho cercato di modificarlo per renderlo standard e di livello comparabile agli altri servizi preinstallati. Premetto che ho incoltrato alcune difficoltà  in quanto il prodotto in caso di errore non riporta messaggi di errore da interpretare in console.

# file /etc/rc.d/init.d/ibserver

#!/bin/sh

# ibserver script - Start/stop the InterBase daemon

# chkconfig: 345 85 15
# description: Starts and stops the InterBase backend daemon that handles \
#              all database requests.
# processname: ibmgr
# pidfile: /var/run/ibserver.pid
#

. /etc/init.d/functions

: ${INTERBASE:=/opt/interbase}
: ${ISC_USER:=SYSDBA}
: ${ISC_PASSWORD:=masterkey}

start() {
  echo -n "Starting ibserver service: "
  su -l interbas -c '/opt/interbase/bin/ibmgr -start -forever 2>/dev/null'
  pid=`pidof ibserver`
  touch /var/lock/subsys/ibserver
  echo $pid > /var/run/ibserver.pid
  success
  echo
}

stop() {
  $INTERBASE/bin/ibmgr -shut -user SYSDBA -password $ISC_PASSWORD 2>/dev/null
  ret=$?
  if [ $ret -eq 0 ]; then
    action "Stopping ibserver service: " /bin/true
  else
    action "Stopping ibserver service: " /bin/flase
  fi
  [ $ret -eq 0 ] && rm -f /var/run/ibserver.pid
  [ $ret -eq 0 ] && rm -f /var/lock/subsys/ibserver
  return $ret
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  reload)
    stop
    star
    ;;
  status)
    status ibserver
    ;;
  *)
    echo "Usage: ibserver {start|stop|status|restart}"
    exit 1
esac

exit 0

La funzione stop() non funziona come dovrebbe, infatti in caso di errore (servizio non attivo), il server risponde con in messaggio di errore, ma restituisce sempre valore nullo. Dovrebbe rispondere con valore negativo. Questo script deve essere protetto con maschera 700, in quanto la password del super utente è in chiaro.

Copiato lo script in /etc/rc.d/init.d/ usare il comando chkconfig per aggiungere lo script nel livelli 3 e 5.

# chkconfig --add ibserver Invio
# chkconfig --level 35 ibserver on Invio

Aggiungere nel file /etc/hosts.equiv e quindi copiare questo file in /etc/gds_hosts.equiv la riga seguente:

# file /etc/hosts.equiv

localhost interbas

Un bug attualmente presente su questa versione di Interbase e che si manifesta con la Red Hat 7.0 può non avviare l'Intebase. L'errore che si manifesta è il seguente: localhost (Server) Fri Feb 9 13:41:41 2001 SERVER/process_packet: connection rejected for interbas Il supporto di INPRISE consiglia di installare gli aggiornamenti delle librerie glibc, e non si dovrebbe più manifestare. In verità  l'errore persite, però avvia il servizio ugualmente!

18.2   Gestione utenti

L'utility per gestire gli utenti con interbase è gsec. Il comando può essere avviato sia se si è superutent (root) sia come utente interbas. Il secondo caso è quello consigliato, per evitare di utilizzare root come utente.


# su - interbas Invio
bash-2.04$ gsec -user SYSDBA -password password
GSEC>

Se state utilizzando per la prima volta interbase sicuramente l'unico utente presente è SYSDBA. Verifichiamo con il comando di.


GSEC>di Invio
      user name                      uid   gid     full name
------------------------------------------------------------------------------------------
SYSDBA                              0     0

Per gestire gli utente questa utility offre una serie di comandi con relativi parametri, i comandi possono anche essere abbreviati: esempio di sta per display, può essere utilizzato uno o l'altro indifferentemente.

add <name> [ <parameter> ...] Aggiunge un nuovo utente
delete <name> Cancella un utente
display <name> Visualizza i dati di un utente
modify <name> <parameter> [ <parameter> ... ] Modifica i parametri di un utente
quit Esci

I parmaetri disponibili sono i seguenti: -pw <password>, -uid <uid>, -gid <uid>, -fname <firstname>, -mname <middlename>, -lname <lastname>. Per aggiungere un nuovo utente digitare il seguente comando:


GSEC> add umbertoz -pw password -fname Umberto -lname Zanatta Invio
GSEC> di Invio
          user name                      uid   gid     full name
------------------------------------------------------------------------------------------
SYSDBA                              0     0
UMBERTOZ                            0     0      Umberto  Zanatta
GSEC>

Per modificare la password di umberto digitare:


GSEC> mo umbertoz -pw nuovapassword Invio
GSEC>

Rispetto al database MySQL visto in precedenza, per i permessi su tabelle e database bisogna usare i comandi standard SQL GRANT e REVOKE.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome interbase.html

[successivo] [precedente] [inizio] [fine] [indice generale]