Démarrer avec MySQL?
C'est pas mon truc. Alors je prends 2 ou 3 notes pour démarrer vite fait.
- Manuel de reference en francais: https://dev.mysql.com/doc/refman/5.7/en/
Installer
Installer la base MySQL? (c'est souvent fait automatiquement, mais on
peut le refaire si nécessaire) :
prompt#mysql_install_db --user=mysql
Implicitement, il y a création de 2 comptes root et de 2 comptes anonymes qui
peuvent utiliser la base test.
Ensuite mettre en place un mot de passe root avec une des deux
commandes ci-dessous :
prompt#/usr/bin/mysqladmin -u root password 'new-password'
prompt#/usr/bin/mysqladmin -u root -h zig.cetu.prv password 'new-password'
Exe: grant privileges to cmic sur toute la base jardin de ce serveur :
mysql>grant all privileges on jardin.* to cmic@localhost identified by '<motdepasse>';
mysql>flush privileges;
Réference
mysql>show databases
mysql>use database;
mysql>select version();
mysql>show current_date;
mysql>show tables; #==> table agents
mysql>describe agents; #structure de la table agents
mysql>tee /tmp/abc.txt ; #copie de la sortie
mysql>source /home/moi/requete.sql; #exec. d'un requete
prompt#mysqladmin version #Verifier que le daemon MySqld? tourne et autre infos
prompt#mysqladmin variables #Le contenu des variables
Changer le mot de passe root
mysqladmin -u root -p password 'azerty$1';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password$1;
FLUSH PRIVILEGES;
Mot de passse root perdu ?
mot de passe perdu ou acces impossible sur la console avec le message suivant :
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
prompt#kill <pid de MySqld?>
prompt#mysqld_safe --skip-grant-tables --skip-networking &
prompt#mysql -uroot mysql
mysql>update user set password=PASSWORD('azerty$1') where user="root" and host='localhost';
mysql>flush privileges;
mysql>exit;
prompt#mysqladmin shutdown
prompt#/etc/init.d/mysql start
On peut alors se logger root avec le mot de passe azerty$1.
Dans le cas de MySQL? version 8 dans une jail FreeBSD?, ajouter "skip-grant-tables" dans la section [mysqld] de /usr/local/etc/mysql/my.cnf. cf https://stackoverflow.com/questions/41645309/mysql-error-access-denied-for-user-rootlocalhost
Autoriser l'utilisateur <user> de tous les clients à accéder à MySQL?.
A travers le port 3306. Dangereux. Se servir de la ligne ci-dessous en restreignant à 1 user sur 1 host particulier.
mysql>select Host, User from mysql.user ;
mysql>grant all privileges on *.* to '<user>'@'%' identified by '<motdepasse>' with grant option;
Autoriser l'utilisateur grigri a accéder la ligne de commande en local
suite à l'erreur :
root@zombie:/tmp# mysql --user=grigri --password=gris ma_base
ERROR 1045 (28000): Access denied for user 'grigri'@'localhost' (using password: YES)
prompt#mysql -u root -p
...
mysql>use mysql ;
mysql>set password for 'grigri'@'localhost' = PASSWORD('gris') ;
Crer un utilisateur
.. puis changer son mot de passe et voir la table mysql.user:
CREATE USER 'cmic1'@'localhost' IDENTIFIED BY 'Password$1'; #cmic1 ne pourra se connecter que sur le serveur local
CREATE USER 'cmic2'@'%' IDENTIFIED BY 'Password$$2'; #cmic2 pourra se connecter sauf sur le le serveur local
GRANT SELECT, INSERT, UPDATE ON database-name.* TO 'cmic2'@'%'; #grants for cmic2
FLUSH PRIVILEGES;
Changer son mot de passe, 3 manières:
ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'new-password';
SET PASSWORD for 'testuser'@'localhost' = 'new-password';
UPDATE user SET authentication_string = PASSWORD('new-password') WHERE user = 'testuser' AND host = 'localhost';
SET PASSWORD for 'testuser'@'localhost' = 'new-password';
FLUSH PRIVILEGES;
Voir la table user (et notamment l'algorhytme de chiffrement par defaut qui est passé dans la version 8 de 'mysql_native_password' à 'caching_sha2_password')
SELECT user, authentication_string, plugin, host FROMmysql.user;
-- Cmic -- Cmic
|