« MySQL/Manipulation de base » : différence entre les versions

Contenu supprimé Contenu ajouté
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 2 :
 
== Création ==
<sourcesyntaxhighlight lang=sql>
CREATE DATABASE Nom_de_la_base;
</syntaxhighlight>
</source>
 
<code>mysqladmin create</code> permet de le faire en ligne de commande.
Ligne 11 :
 
== Suppression ==
<sourcesyntaxhighlight lang=sql>
DROP DATABASE Nom_de_la_base;
</syntaxhighlight>
</source>
 
<code>mysqladmin drop</code> permet de le faire en ligne de commande. Le paramètre <code>-f</code> force celle-ci sans poser de question.
Ligne 22 :
 
Il reste toutefois la ligne de commande pour le faire en plusieurs étapes :
<sourcesyntaxhighlight lang=bash>
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
</syntaxhighlight>
</source>
 
Une autre option avec les droits root, est de renommer le répertoire de la base :
<sourcesyntaxhighlight lang=bash>
cd /var/lib/mysql/
/etc/init.d/mysql stop
mv Nom_de_la_base/ Nom_de_la_nouvelle_base/
/etc/init.d/mysql start
</syntaxhighlight>
</source>
 
Après renommage, il convient de migrer les permissions :
<sourcesyntaxhighlight lang=sql>
UPDATE mysql.db SET `Db`='Nom_de_la_nouvelle_base' WHERE `Db`='Nom_de_la_base';
FLUSH PRIVILEGES;
</syntaxhighlight>
</source>
 
== Copie ==
Ligne 48 :
<code>mysqldump</code> peut sauvegarder les bases, il suffit de réinjecter son résultat dans d'autres bases.
 
<sourcesyntaxhighlight lang=bash>
# Premièrement, nettoyer la base de destination :
mysqladmin drop -f base2
Ligne 54 :
# Ensuite, copier la base1 dans la base2 :
mysqldump --opt base1 | mysql base2
</syntaxhighlight>
</source>
 
{{attention|En cas de gros volume, il est plus rapide de copier les .bin des bases, au lieu d'utiliser <code>mysqldump</code>.}}
Ligne 60 :
==== Backup ====
Pour définir le backup automatique d'une base tous les soirs à minuit<ref>http://stackoverflow.com/questions/6645818/how-to-automate-database-backup-using-phpmyadmin</ref>, sous Linux :
<sourcesyntaxhighlight lang=bash>
$ crontab -e
0 0 * * * /usr/local/bin/mysqldump -uLOGIN -PPORT -hHOST -pPASS base1 | gzip -c > `date “+\%Y-\%m-\%d”`.gz
</syntaxhighlight>
</source>
 
Le fichier décompresser est au format SQL et peut donc être exécuter pour recréer les bases, tables, et insérer les enregistrements.
Ligne 102 :
Sous Linux :
* Remplacer le fichier ''libmysqlclient.so'' de DBDesigner par le nouveau :
<sourcesyntaxhighlight lang=bash>
sudo ln -sf /usr/lib/libmysqlclient.so.10 /usr/lib/DBDesigner4/libmysqlclient.so
</syntaxhighlight>
</source>
* Trouver et installer <code>kylixlibs3-unwind-3.0-rh.4.i386.rpm</code>
* Trouver un vieux xorg (ex : <code>xorg-x11-libs-6.8.2-37.FC4.49.2.1.i386.rpm</code> depuis FC4) et l'extraire :
<sourcesyntaxhighlight lang=bash>
rpm2cpio x.rpm | cpio -i
</syntaxhighlight>
</source>
* Récupérer ''libXft.so.1.1'' dans ce package et l'installer :
<sourcesyntaxhighlight lang=bash>
sudo cp libXft.so.1.1 /usr/lib
ldconfig
</syntaxhighlight>
</source>
Maintenant DBDesigner4 peut se connecter à MySQL5.
 
Ligne 128 :
 
Sur le client, installer <code>mysql-client</code> :
<sourcesyntaxhighlight lang=bash>
aptitude install mysql-client
</syntaxhighlight>
</source>
Sous Fedora/CentOS :
<sourcesyntaxhighlight lang=bash>
yum install mysql
</syntaxhighlight>
</source>
 
Avant d'installer ODBC, test la connexion distante localement :
<sourcesyntaxhighlight lang=bash>
$ mysql -h mysqlhost -u user1 mysqldatabase -p
Enter password: PassUser1
</syntaxhighlight>
</source>
 
Il faut créer la base <code>mysqldatabase</code> et l'utilisateur <code>user1</code> sur <code>mysqlhost</code>.
<sourcesyntaxhighlight lang=bash>
mysql> show databases;
+--------------------+
Ligne 155 :
mysql> quit;
Bye
</syntaxhighlight>
</source>
 
Toujours sur la machine cliente :
<sourcesyntaxhighlight lang=bash>
aptitude install libmyodbc unixodbc
</syntaxhighlight>
</source>
Pour Fedora/CentOS :
<sourcesyntaxhighlight lang=bash>
yum install mysql-connector-odbc unixODBC
</syntaxhighlight>
</source>
 
Les fichiers <code>/etc/odbc.ini</code> et <code>/etc/odbcinst.ini</code> sont créés.
Ligne 170 :
<code>odbcinst.ini</code> déclare le pilote ODBC disponible.
Exemple pour Debian :
<sourcesyntaxhighlight lang=ini>
[MySQL]
Description = MySQL driver
Ligne 178 :
CPReuse =
FileUsage = 1
</syntaxhighlight>
</source>
Pour CentOS :
<sourcesyntaxhighlight lang=ini>
[MySQL]
Description = ODBC for MySQL
Ligne 186 :
Setup = /usr/lib/libodbcmyS.so
FileUsage = 1
</syntaxhighlight>
</source>
 
Maintenant <code>odbcinst</code> est utilisable :
<sourcesyntaxhighlight lang=ini>
# odbcinst -j
unixODBC 2.2.4
Ligne 195 :
SYSTEM DATA SOURCES: /etc/odbc.ini
USER DATA SOURCES..: /root/.odbc.ini
</syntaxhighlight>
</source>
 
Pour d'autres options : <code>man odbcinst</code>
Ligne 209 :
 
Par exemple, un fichier <code>/etc/odbc.ini</code> (le nom du DSN est entre crochets []) :
<sourcesyntaxhighlight lang=ini>
[MySQL-test]
Description = MySQL ODBC Database
Ligne 218 :
PASSWORD =
DATABASE = mysqldatabase
</syntaxhighlight>
</source>
 
Dans ce cas, le DSN est appelé '''MySQL-test'''.
 
Ensuite pour tester, utiliser la commande '''isql''' :
<sourcesyntaxhighlight lang=bash>
$ isql -v MySQL-test user1 PassUser1
+---------------------------------------+
Ligne 243 :
2 rows returned
SQL> quit;
</syntaxhighlight>
</source>
 
Depuis OOo :