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.