Commandes utiles
Backup/restore de bdd
Backup
si on utilise le root...
mysqldump --user=root -p --databases base | gzip > base.sql.gz
Restore
si on utilise le root...
mysql -u root -p base < base.sql
Gestion base
voir les bases
show databases;
utiliser une base
use nomdelabase;
voir les tables
show tables;
voir les champs present dans la base
show column from nomdelatables;
Creation d'une base
create database nomdelabase;
Supprimer juste une ligne dans une table
delete from 'bdd'.'table' where 'condition';
si l'on desire supprimer plusieurs ligne
delete from 'bdd'.'table' where `column` IN (x,y);
vider une table
Pour vider le contenu d'une table sans supprimer la table
truncate table 'la_table'
Suppression d'un table
Drop table tableASupp
Modification du type d'une columns dans une table
ALTER TABLE table_name
MODIFY COLUMN column_name1 data_type,
MODIFY COLUMN column_name2 data_type ... ;
Suppression d'une base
DROP database Base_name
Gestion utilisateur
Voir les utilisateurs existant
SELECT User FROM mysql.user;
creation utilisateur
CREATE USER 'user'@localhost IDENTIFIED BY 'password';
Suppression d'un utilisateur
DROP USER ‘identifiant’@’serveur’;
Gestion droits utilisateur
Voir les droits d'un utilisateur
SHOW GRANTS FOR 'user'@localhost;
Ajouter des droits
GRANT ALL PRIVILEGES ON nomBdd.* TO 'user'@localhost;
FLUSH PRIVILEGES;
/!\ ATTENTION : Bien faire attention de selectionner les droits en fonction (USAGE, ALTER, CREATE, DELETE SELECT, INSERT, UPDATE, ALL PRIVILEGES,..)
Suppression de droits
REVOKE ALL PRIVILEGES ON nomBdd.* FROM 'user'@'192.%';
Modification du mot de passe utilisateur.
Il existe plusieur soulution en fonction de votre version mysql/mariadb
Pour MySQL 5.7.6 ou MariaDB 10.1.20 (ou supérieur)
ALTER USER 'user-name'@'localhost' IDENTIFIED BY 'NEW_USER_PASSWORD';
FLUSH PRIVILEGES;
Si le ALTER USER ne fonctionne pas, vouz pouvez modifier la table user directement:
UPDATE mysql.user SET authentication_string = PASSWORD('NEW_USER_PASSWORD')
WHERE User = 'user-name' AND Host = 'localhost';
FLUSH PRIVILEGES;
Pour MySQL 5.7.5 ou MariaDB 10.1.20 (ou inférieur):
SET PASSWORD FOR 'user-name'@'localhost' = PASSWORD('NEW_USER_PASSWORD');
FLUSH PRIVILEGES;
Trucs et astuces
Ne pas afficher derreur si la base nexiste pas
Par defaut, si le nom de base utilise nexiste pas, la requete retournera une erreur. Pour eviter dobtenir cette erreur si vous n'etes pas sur du nom, il est possible dutiliser loption IF EXISTS. La syntaxe sera alors la suivante:
DROP DATABASE IF EXISTS ma_base
Connection distante
Se connecter a un serveur distant (utile pour test) Remplacer les xxx par votre adresse de serveur
mysql -u User -p -h xxx.xxx.xxx.xxx
Last used of my database
SELECT TABLE_NAME, UPDATE_TIME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbname'
AND TABLE_NAME = 'tabname'
order by UPDATE_TIME;
ERREUR : Old insecure authentication
Dans le cas de ce message qui apparait
QLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password'). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file
il faut aller sur la base de donnée ou l'application essaie de ce connecter et lancer les commande suivante
SET @@session.old_passwords = 0;
Query OK, 0 rows affected (0.00 sec)
SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('existingpass');
Query OK, 1 rows affected (0.00 sec);