MySQL/Manipulation de base
Création
modifierCREATE DATABASE Nom_de_la_base;
NB : dans MySQL, CREATE SCHEMA
est un parfait synonyme de CREATE DATABASE
, contrairement à d'autres SGBD comme Oracle ou SQL Server.
En ligne de commande
modifiermysqladmin create
permet de le faire en ligne de commande[1].- Sinon :
echo 'CREATE DATABASE IF NOT EXISTS ma_base COLLATE utf8mb4_unicode_ci;'|mysql -u root
Suppression
modifier DROP DATABASE Nom_de_la_base;
mysqladmin drop
permet de le faire en ligne de commande. Le paramètre -f
force celle-ci sans poser de question.
Renommage
modifierDans les versions 5.1.x il existait une commande RENAME DATABASE db1 TO db2;
, mais elle a été retirée suite à des pertes de données[2].
Il reste toutefois la ligne de commande pour le faire en plusieurs étapes :
mysqladmin create Nom_de_la_nouvelle_base mysqldump --opt Nom_de_la_base | mysql Nom_de_la_nouvelle_base mysqladmin drop -f Nom_de_la_base
Une autre option avec les droits root, est de renommer le répertoire de la base :
cd /var/lib/mysql/ /etc/init.d/mysql stop mv Nom_de_la_base/ Nom_de_la_nouvelle_base/ /etc/init.d/mysql start
Après renommage, il convient de migrer les permissions :
UPDATE mysql.db SET `Db`='Nom_de_la_nouvelle_base' WHERE `Db`='Nom_de_la_base';
FLUSH PRIVILEGES;
Copie
modifierAvec mysqldump
modifier- Pour plus de détails voir : MySQL/mysqldump.
Avec des outils de modélisation
modifierCes logiciels permettent de représenter les tables sous formes de diagrammes.
phpMyAdmin
modifier- Pour plus de détails voir : MySQL/PhpMyAdmin.
MySQL Workbench
modifierMySQL Workbench permet également la migration depuis d'autres bases de données, telles que Microsoft SQL Server[3].
Par rapport à phpMyAdmin, il a l’inconvénient de devoir être installé, mais a l'avantage de pouvoir modifier des tables en changeant de champ au clavier, comme dans un tableur.
DBDesigner
modifierDBDesigner est en licence GNU GPL, mais ne peut pas être considéré comme un freeware car il requiert un compilateur Kylix non gratuit.
Il rencontre une erreur de connexion à MySQL sur la version 4 : unable to load libmysqlclient.so. Pour la résoudre :
- Installer les "Shared compatibility libraries"Télécharger MySQL pour version 5.0).
Sous Linux :
- Remplacer le fichier libmysqlclient.so de DBDesigner par le nouveau :
sudo ln -sf /usr/lib/libmysqlclient.so.10 /usr/lib/DBDesigner4/libmysqlclient.so
- Trouver et installer
kylixlibs3-unwind-3.0-rh.4.i386.rpm
- Trouver un vieux xorg (ex :
xorg-x11-libs-6.8.2-37.FC4.49.2.1.i386.rpm
depuis FC4) et l'extraire :
rpm2cpio x.rpm | cpio -i
- Récupérer libXft.so.1.1 dans ce package et l'installer :
sudo cp libXft.so.1.1 /usr/lib ldconfig
Maintenant DBDesigner4 peut se connecter à MySQL5.
Kexi
modifierIl existe aussi Kexi de Calligra Suite, téléchargeable sur http://userbase.kde.org/Calligra/Download/fr.
OpenOffice Base et ODBC
modifierConfiguration typique :
- Soit une base MySQL appelée
mysqlhost
. - OpenOffice.org sur la machine cliente (Debian GNU/Linux dans l'exemple).
- Connexion via ODBC.
Sur le client, installer mysql-client
:
aptitude install mysql-client
Sous Fedora/CentOS :
yum install mysql
Avant d'installer ODBC, test la connexion distante localement :
$ mysql -h mysqlhost -u user1 mysqldatabase -p Enter password: PassUser1
Il faut créer la base mysqldatabase
et l'utilisateur user1
sur mysqlhost
.
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysqldatabase | +--------------------+ 2 rows in set (0.00 sec) .... mysql> quit; Bye
Toujours sur la machine cliente :
aptitude install libmyodbc unixodbc
Pour Fedora/CentOS :
yum install mysql-connector-odbc unixODBC
Les fichiers /etc/odbc.ini
et /etc/odbcinst.ini
sont créés.
odbcinst.ini
déclare le pilote ODBC disponible.
Exemple pour Debian :
[MySQL]
Description = MySQL driver
Driver = /usr/lib/odbc/libmyodbc.so
Setup = /usr/lib/odbc/libodbcmyS.so
CPTimeout =
CPReuse =
FileUsage = 1
Pour CentOS :
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc3.so
Setup = /usr/lib/libodbcmyS.so
FileUsage = 1
Maintenant odbcinst
est utilisable :
# odbcinst -j
unixODBC 2.2.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
USER DATA SOURCES..: /root/.odbc.ini
Pour d'autres options : man odbcinst
Il faut créer au moins un DSN (Data Source Name ou Data Set Name), parce que chaque connexion ODBC avec OOo est initialisée avec.
Pour créer un DSN, il existe différente possibilités :
- Modifier
/etc/odbc.ini
(concerne tous les utilisateurs) - Modifier
~/.odbc.ini
(concerne un seul utilisateur) - Utilise les applications graphiques comme ODBCConfig (Debian :
unixodbc-bin
, Fedora :unixODBC-kde
).
Finalement, ces applications graphiques modifient /etc/odbc.ini ou ~/.odbc.ini.
Par exemple, un fichier /etc/odbc.ini
(le nom du DSN est entre crochets []) :
[MySQL-test]
Description = MySQL ODBC Database
TraceFile = stderr
Driver = MySQL
SERVER = mysqlhost
USER = user1
PASSWORD =
DATABASE = mysqldatabase
Dans ce cas, le DSN est appelé MySQL-test.
Ensuite pour tester, utiliser la commande isql :
$ isql -v MySQL-test user1 PassUser1 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> show databases; +-------------------+ | Database | +-------------------+ | information_schema| | mysqldatabase | +-------------------+ 2 rows affected 2 rows returned SQL> quit;
Depuis OOo :
-> File -> New -> Database -> Connecting to an existing database -> MySQL -> Next -> Connect using ODBC -> Next -> Choosing a Data Source -> MySQL-test -> Next -> Username : user1 (tick password required) -> Yes, register the database for me -> Finish
À ce stade, le programme est connecté à la base mysqldatabase en tant que user1. Il reste donc le mot de passe à rentrer.
Ensuite, Java est requis dans les Wizards uniquement (lors de création directe JRE est inutile) :
- Wizard pour créer un formulaire.
- Wizard pour créer des rapports.
- Wizard pour créer des requêtes.
- Wizard pour créer tables.
Les distributions GNU/Linux fournissent généralement OpenOffice avec IcedTea (openjdk-6-jre
/java-1.6.0-openjdk
) ou GCJ (java-gcj-compat
/java-1.4.2-gcj-compat
) donc les fonctionnalités basées sur du Java fonctionnent.
Restauration
modifier- Sous Linux, le mot de passe est demandé après entrée de la commande :
mysql -h localhost -u root -p MaBase < MaBase.sql
- Sous Windows, par défaut le compte root n'a pas de mot de passe et MySQL n'est pas dans les variables d'environnement donc on utilise son chemin absolu :
"C:\Program Files (x86)\EasyPHP\binaries\mysql\bin\mysql.exe" -h localhost -u root MaBase < MaBase.sql
Contrairement aux importations de PhpMyAdmin il n'y a pas de limite. Par exemple on peut charger une base de 2 Go en cinq minutes.
À partir d'un fichier compressé :
gunzip < ~/my_dump.xml.gz | mysql -u my_user -p my_base