Affichage des articles dont le libellé est MySQL. Afficher tous les articles
Affichage des articles dont le libellé est MySQL. Afficher tous les articles

07 juin 2013

MySQL setup

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]
[mysqld]
port=1234
Puis redémarrer
 # 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.