[successivo] [precedente] [inizio] [fine] [indice generale]
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.
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! |
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