Démarrer avec MySQL
Mots de passe
Après avoir installé les 5 RPM de la version 4.0.3 (ne
soyons
pas avares), on s'aperçoit qu'il a lancé un processus
sous
root :
mysqld_safe --datadir=/var/lib/mysql
qui lui-même a lancé une dizaine de processus mysqld sous
mysql.
Il n'y a pas de mot de passe pour le root de MySql. Il faut y
remédier
tout de suite.
shell> mysql -u root
mysql> SET PASSWORD FOR root@localhost=PASSWORD('mon_nouveau_password');
On accorde à l'utilisateur jmv tous les droits sur la la base de
données
"test" crée par l'installation.
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON test.*
-> TO 'jmv'@'localhost' IDENTIFIED BY 'mot_de_passe';
Query OK, 0 rows affected (0.04 sec)
mysql> select Host, User, Password, Create_priv from mysql.user;
+-----------+------+------------------+-------------+
| Host | User | Password | Create_priv |
+-----------+------+------------------+-------------+
| localhost | root | 5256df247c57f548 | Y |
| protea | root | 5256df247c57f548 | Y |
| localhost | | | N |
| protea | | | N |
| % | jmv | 3e12797c28b3b096 | N |
+-----------+------+------------------+-------------+
Commandes de base
Maintenant jmv a un mot de passe, et il est limité à
la base de données "test". Il se connecte dans cette base de
données
"test", et peut lancer toutes les commandes SQL de création et
de
requêtes; voir les exemples de Introduction
to MySQL: A MySQL Tutorial :
mysql -u jmv test
Si plus tard on veut se reconnecter à MySQL sous root il faudra
ajouter
-p :
mysql -u root -p
Pour arrêter/démarrer la base:
/etc/init.d/mysql stop
/etc/init.d/mysql start
Programmation Java
Etant un programmeur Java, j'installe le pilote JDBC pour MySQL, en le
téléchargeant
de mysql.com (Connector/J
3.0.1).
J'installe
le JAR mysql-connector-java-3.0.15-ga-bin.jar
dans $JAVA_HOME/jre/lib/ext/ et c'est tout pour
l'installation du pilote. Par programme la connection se fait comme
ceci:
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
java.sql.Connection conn =
java.sql.DriverManager.getConnection(
"jdbc:mysql://localhost/jmv?user=jmv&password=mon-passe");
} catch(Exception e){
System.out.println("Connection ratée: "+e);
System.exit(-1);
}
On peut ensuite s'inspirer de mon petit programme JDBC2XML.java : programme JDBC
d'exportation d'une base relationnelle en divers formats XML .
Dans un logiciel Orienté Objet il est recommandé
d'utiliser un outil de correspondance Objet-Relationnel (ORM) tel que Hibernate ou iBatis. Il est même
recommandé de les utiliser via l'environnement Spring .
Les classes et jar des pilotes JCBC sont :
Base de données
|
Pilote
|
URL typique
|
jar
|
MySQL
|
com.mysql.jdbc.Driver
|
jdbc:mysql://localhost/ma_table
|
|
postgresql |
org.postgresql.Driver |
|
postgresql-jdbc3.jar ou
pg74.1jdbc3.jar |
HSQL (Hypersonic)
|
org.hsqldb.jdbcDriver
|
jdbc:hsqldb:hsql:file:/tmp/testdb |
|
|
|
|
|
Interfaces utilisateur graphiques
Voulant une IHM pour voir mes bases, j'ai trouvé cette
application
Java:
Java
SQL
Admin
ToolAllows you to manage a RDBMS via Java
and
JDBC.
Ca se lance ainsi dans le répertoire d'installation :
java gpl.fredy.admin.Admin &
Ensuite ATTENTION à la chaîne de connection ("URL"). Si on
met
"localhost" ça ne marche pas, il faut "localhost.localdomain".
La classe du pilote est com.mysql.jdbc.Driver , et l'URL
commence
par jdbc:mysql:// .
Il y a aussi SQuirreL
SQL , avec ses plugin qui permettent la complétion et
la coloration syntaxique .
Un autre outil de la même catégorie:
JDBC Manager A pure
Java (Swing) front end to connect with every DBMS (Data Base Manager
System) that has a JDBC
driver. Provides full access to: view, modify data, create/alter/drop
tables and relations, etc. All done visually. It is platform and DBMS
independent
DbModeller
est un excellent outil graphique simple en Java pour créer un
schéma de base de données. Il peut lire et écrire
du SQL, et se connecter sur une base pour récupérer le
schema.