Voici un rapide mémo pour la configuration de base de MySQL.
Avec Fedora on installe et démarre MySQL en 3 commandes (en root) :
# yum install mysql-server
# systemctl start mysqld
# systemctl enable mysqld
Par défaut MySQL attend les connexions sur le port 3306. Pour changer cette valeur éditer le fichier /etc/my.cfg et ajouter (ou modifier) le paramètre 'port' dans la section [mysqld]
# systemctl restart mysqld
Notes:
- Dans ce qui suit "www.example.com" està remplacer par le nom de votre serveur.
- On va utiliser le user root de MySQL mais ce n'est pas le root du serveur.
- Ce qui suit peut être fait par n'importe quel utilisateur.
> mysql -u root
+------+-----------------+----------+
| user | host | password |
+------+-----------------+----------+
| root | localhost | |
| root | www.example.com | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | www.example.com | |
+------+-----------------+----------+
mysql> delete from mysql.user where user='';
mysql> select user,host,password from mysql.user;
+------+-----------------+----------+
| user | host | password |
+------+-----------------+----------+
| root | localhost | |
| root | www.example.com | |
| root | 127.0.0.1 | |
+------+-----------------+----------+
mysql> set password for root@'127.0.0.1'=password('secret');
mysql> set password for root@'www.example.com'=password('secret');
mysql> select user,host,password from mysql.user;
+------+-----------------+-------------------------------------------+
| user | host | password |
+------+-----------------+-------------------------------------------+
| root | localhost | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | www.example.com | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | 127.0.0.1 | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
+------+-----------------+-------------------------------------------+
La valeur de la colonne 'password' change suivant le mot de passe. Ici on voit le codage de 'secret'.
where user="root" and host="www.example.com";
mysql> flush privileges;
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | % | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | 127.0.0.1 | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
+------+-----------+-------------------------------------------+
mysql> quit
ATTENTION:
% matche tout host, sauf localhost !
Donc l'entrée avec localhost n'est pas redondante avec l'entrée %
On se reconnecte et là il faut utiliser l'option -p puisque root a maintenant un mot de passe.
>mysql -u root -p
Enter password: <-- entrer le mot de passe ('secret' dans notre example)
-- utiliser MySQL
mysql> quit
Après cela on peut tout faire en ligne de commande, avec phpMyAdmin ou MySQL Workbench.
Avec Fedora on installe et démarre MySQL en 3 commandes (en root) :
# yum install mysql-server
# systemctl start mysqld
# systemctl enable mysqld
Par défaut MySQL attend les connexions sur le port 3306. Pour changer cette valeur éditer le fichier /etc/my.cfg et ajouter (ou modifier) le paramètre 'port' dans la section [mysqld]
[mysqld]Puis redémarrer
port=1234
# systemctl restart mysqld
Notes:
- Dans ce qui suit "www.example.com" està remplacer par le nom de votre serveur.
- On va utiliser le user root de MySQL mais ce n'est pas le root du serveur.
- Ce qui suit peut être fait par n'importe quel utilisateur.
> mysql -u root
-- etape 1: lister les users existants:
mysql> select user,host,password from mysql.user;+------+-----------------+----------+
| user | host | password |
+------+-----------------+----------+
| root | localhost | |
| root | www.example.com | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | www.example.com | |
+------+-----------------+----------+
-- etape 2: supprimer les users inutiles:
mysql> delete from mysql.user where user='root' and host='::1';mysql> delete from mysql.user where user='';
mysql> select user,host,password from mysql.user;
+------+-----------------+----------+
| user | host | password |
+------+-----------------+----------+
| root | localhost | |
| root | www.example.com | |
| root | 127.0.0.1 | |
+------+-----------------+----------+
-- etape 3: donner un mot de passe au user root de MySQL:
mysql> set password for root@localhost=password('secret');mysql> set password for root@'127.0.0.1'=password('secret');
mysql> set password for root@'www.example.com'=password('secret');
mysql> select user,host,password from mysql.user;
+------+-----------------+-------------------------------------------+
| user | host | password |
+------+-----------------+-------------------------------------------+
| root | localhost | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | www.example.com | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | 127.0.0.1 | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
+------+-----------------+-------------------------------------------+
La valeur de la colonne 'password' change suivant le mot de passe. Ici on voit le codage de 'secret'.
-- pour autoriser root à se connecter à MySQL via le réseau :
mysql> update mysql.user set host="%"where user="root" and host="www.example.com";
mysql> flush privileges;
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | % | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
| root | 127.0.0.1 | *14E65567ABDB5135D0CFD9A70B3032C179A49EE7 |
+------+-----------+-------------------------------------------+
mysql> quit
ATTENTION:
% matche tout host, sauf localhost !
Donc l'entrée avec localhost n'est pas redondante avec l'entrée %
On se reconnecte et là il faut utiliser l'option -p puisque root a maintenant un mot de passe.
>mysql -u root -p
Enter password: <-- entrer le mot de passe ('secret' dans notre example)
-- utiliser MySQL
mysql> quit
Après cela on peut tout faire en ligne de commande, avec phpMyAdmin ou MySQL Workbench.