OpenOffice.org Base et MySQL
Il s'agit ici d'utiliser le module base de OpenOffice.org, pour gérer une base de données MySQL.
La configuration
OpenOffice et MySQL sont sur deux machines différentes :
- MySQL : sur une machine d'IP 192.168.1.130 Il s'agit de MySQL 5.0 (Debian GNU/Linux sarge-backports)
- OpenOffice.org : sur une machine du réseau 192.168.1.0 Il s'agit de OpenOffice.org 2.0.3
Le serveur MySQL
La configuration du serveur MySQL ne pose pas de difficulté particulière :
- Installation
aptitude install mysql-server
- Mot de passe root
mysql -uroot SET PASSWORD FOR root@localhost=PASSWORD('PassRoot'); quit
- on delete les user sans passwd
mysql -uroot -pPassRoot USE mysql; DELETE FROM user WHERE Password=; quit
- Pas de base test (si version < 5 : il n'y en a plus en mysql 5.0).
mysql -uroot -pPassRoot show databases; DROP DATABASE test;
- Création de la base contacts : c'est important, car OpenOffice.org ne permet pas la création de tables. OpenOffice.org accède à des bases existantes.
CREATE DATABASE IF NOT EXISTS contacts; show databases;
- Création de l'utilisateur user1 + droits sur base contacts : même remarque : pour OpenOffice.org, l'utilisateur doit avoir été créé préalablement.
grant all on contacts.* to user1 identified by 'PassUser1';
- Dernière précaution : permettre l'accès à la base depuis un poste distant, en indiquant à MySQL le nom / l'adresse sur laquelle il doit écouter. Dans notre cas, il s'agit de 192.168.1.30 mais ce pourrait être un domaine pleinement qualifié, ou localhost.
Modification de /etc/mysql/my.cnf bind-address = 192.168.1.130
Sur le poste client
Indépendamment de OpenOffice.org, on va d'abord tester l'accès à la base distante, au travers d'un client MySQL
- Installation du client MySQL
aptitude install mysql-client (installe aussi mysql-common).
- Tests de connexion :
mysql -h 192.168.1.130 -u user1 -p contacts Enter password: PassUser1
Tout semble bien se passer :
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 33 to server version: 5.0.24a-Debian_5~bpo.1-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
A partir de là, place à quelques tests d'interrogations de la base
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | contacts | +--------------------+ 2 rows in set (0.00 sec) .... mysql> quit; Bye
ODBC
Bref, tout va bien, on va maintenant tenter d'accéder à la base, toujours depuis notre poste client, mais via ODBC.
aptitude install libmyodbc (installe aussi unixodbc)
Les fichiers /etc/odbc.ini (fichier vide) et /etc/odbcinst.ini sont créés. odbcinst.ini déclare le driver MySQL odbc :
[MySQL] Description = MySQL driver Driver = /usr/lib/odbc/libmyodbc.so Setup = /usr/lib/odbc/libodbcmyS.so CPTimeout = CPReuse = FileUsage = 1
On peut maintenant utiliser la commande odbcinst :
# odbcinst -j unixODBC 2.2.4 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini USER DATA SOURCES..: /root/.odbc.ini
CF man odbcinst pour toutes les options
On peut également utiliser la commande isql (voir plus bas)
Au préalable, il faut initialiser au moins un DSN (Data Source Name ou Data Set Name). En effet, toute connexion ODBC à une base s'initialise au travers d'un DSN existant. Ce sera vrai dans tous les cas, notamment pour initialiser une connexion ODBC depuis OpenOffice.org.
Pour créer une DSN, plusieurs solutions :
- Modifier le fichier /etc/odbc.ini pour tous les utilisateurs du système.
- Modifier le fichier ~/.odbc.ini pour un utilisateur donné.
- Réaliser les modifications depuis une interface graphique ODBCConfig ou gODBCConfig (paquets debian du même nom). Les applications graphiques, au final, modifient les fichiers /etc/odbc.ini ou ~/.odbc.ini
Exemple de fichier /etc/odbc.ini modifié manuellement :
[MySQL-test] Description = Base MySQL ODBC TraceFile = stderr Driver = MySQL SERVER = 192.168.1.130 USER = user1 PASSWORD = PORT = 3306 DATABASE = contacts
Dans ce cas, le DSN a pour nom MySQL-test
On teste : isql MySQL-test lucien lucien +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>