MySQL : astuces pour quelques ordres de base
Voici quelques astuces dont je me sers souvent, pour ne pas avoir à systématiquement les rechercher, je m’en suis fait une copie dans un petit champ texte :
- Création d’une base de données
CREATE DATABASE z DEFAULT CHARACTER SET utf8; - Initialisation d’une variable via une requête :
SELECT @MON_ID:= ID FROM matable WHERE CHAMP='champ_recherche';
puis on se ressert de cette variable pour faire une insertion en base de données :
INSERT INTO autre_table (ID_CLE_EXTERNE, DESCRIPTION, DOCUMENT) VALUES
(@MON_ID, 'valeur1', './valeur2'); - Relancer le service MySQL
service mysqld stop
- attendre une trentaine de secondes afin que le cache soit vidé et que toutes les allocations mémoires soient correctement libérées
service mysqld start
- Convertir une table en utf8 :
Très important : si vous tapez ce qui suit avec pour objectif de convertir la table et les données cela ne fonctionnera pas :
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
Ce n’est qu’en utilisant les ordres suivants que la conversion sera faite par MySQL !
ALTER TABLE t1 CHANGE c1 c1 BLOB;
ALTER TABLE t1 CHANGE c1 c1 TEXT CHARACTER SET utf8;
- Renommer un champ :
Ici, je renomme la clé primaire «ID
» et je la passe en minuscules («id
« ) :
ALTER TABLE ville CHANGE ID id int(11) NOT NULL auto_increment;
- Modification des
AUTO_INC
Pour changer la valeur d’un auto_inc (‘réinitialiser la valeur’, comme on le dit dans MySQL ici) :
ALTER TABLE tbl_name AUTO_INCREMENT = N
- Créer un utilisateur pour une base de données (la manière sale)
Important : d’abord sans le‘.*’ sinon ça ne fonctionne pas, et puis refaire avec le '.*'
.
Très important : ici on autorise tout à l’utilisateur qui va être crée. C’est donc une méthode rapide mais de bourrin et ce n’est pas la bonne méthode si vous voulez faire un utilisateur proprement, destiné à exister pour longtemps. Dans ce cas il faut faire quelque chose de plus précis afin de ne pas tout lui autoriser.
GRANT ALL PRIVILEGES ON basededonnees
TO ‘nomutilisateur’@’192.168.2.16’
IDENTIFIED BY ‘motdepasse’;
GRANT ALL PRIVILEGES ON basededonnees.*
TO ‘nomutilisateur’@’192.168.2.16’
IDENTIFIED BY ‘motdepasse’;