Dernière modif 17 octobre 2015
Cette page concerne la Mandriva et la ubuntu, sauf mention du contraire les manips sont à faire quelque soit la distribution.
Le chapitre Installation concerne
l'installation des packages binaires, pour une installation en
utilisant
les sources (version plus récente) voir ma page installation apache+PHP+MySQL.
Les autres chapitres concernent les deux types d'installation.
Cela va nous créer un ensemble d'exécutables sous /usr/sbin (ceux réservés à root) et sous /usr/bin (pour tous les utilisateurs), par ailleurs un répertoire /var/lib/mysql va être créé. Le fichier de démarrage du daemon MySQL se trouve sous /etc/rc.d/init.d pour une Mandriva/Mageia et sous /etc/init.d sous ubuntu.
L'installation par rpm n'a pas lancé le daemon il
faudra le faire manuellement en tapant
systemctl start mysqld
NOTE Vous noterez que si vous faites un:
ps aux | grep mysqld
L'utilisateur mysql est proprio du daemon mysqld.
Vous vous rendrez compte que même si c'est root qui lance
le daemon aussitôt après c'est l'utilisateur
mysql
qui en devient le proprio, ainsi si jamais il y avait une faille de
sécurité dans MySQL, le hacker ne se retrouverait
pas root mais mysql avec les droits limités qui
vont avec.
Maintenant on va créer un compte utilisateur (olivier dans mon exemple), pour cela on doit se connecter en tant qu'administrateur de la base à la base de donnée mysql contenant les infos sur les utilisateurs et leurs droits.
/usr/local/mysql/bin/mysql -u root -p mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.6.27 Source distribution
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
A présent on va entrer l'utilisateur olivier qui sera un super utilisateur avec les mêmes droits que root:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'olivier'@'localhost'
> IDENTIFIED BY 'mot-de-passe' WITH GRANT OPTION;
mysql> INSERT INTO user
->
VALUES('localhost','olivier',PASSWORD('mot-de-passe'),
->
'Y','Y','Y','Y','Y','Y',' (...) Y','Y','Y','Y','Y','Y','Y', Y','Y','Y','Y','Y','
',' ',' ',' ','0','0','0','0');
Query OK, 1 row affected (0.00 sec)
Le nombre de champ varie en fonction de la version de mysql.
NOTE Il n'est pas obligatoire de rentrer le login pour le nom d'utilisateur et le mot de passe de login.
Maintenant pour prendre tout ça en compte
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.08 sec)
Pour quitter
mysql>quit
/usr/local/mysql/bin/mysql -u olivier -p
Enter password:
mysql>
Pour voir la liste des bases de données disponibles, on tapera:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0,00 sec)
On va maintenant créer une base de données essai:
mysql> CREATE DATABASE essai;
Query OK, 1 row affected (0.00 sec)
On va utiliser maintenant cette base de donnée
mysql> USE essai
Database changed
Comme la base vient d'être crée, elle ne contient aucune table, pour s'en convaincre il suffit de taper:
mysql> SHOW TABLES;
Empty set (0.00 sec)
Pour notre première exemple Apache+PHP+MySQL, on va créer la table suivante:
mysql> CREATE TABLE coord (
-> nom VARCHAR(20),
-> prenom VARCHAR(20),
-> email VARCHAR(30)
-> );
Query OK, 0 rows affected (0.03 sec)
Jetons un coup d'oeil maintenant sur les tables disponibles:
mysql> SHOW TABLES;
+---------------------+
| Tables in essai |
+---------------------+
|
coord
|
+---------------------+
1 row in set (0.00 sec)
La table nouvellement créée apparaît bien. Pour
avoir le détail de cette table, on tapera:
mysql> DESCRIBE coord;
+-----------+--------------+--------+------+-----------+------+
| Field |
Type |
Null | Key | Default |Extra |
+-----------+--------------+--------+------+-----------+------+
| nom | varchar(20) | YES
| |
NULL
|
|
| prenom | varchar(20) | YES
| |
NULL
|
|
| email | varchar(30) | YES
| |
NULL
|
|
+-----------+--------------+--------+------+-----------+------+
3 rows in set (0.00 sec)
Pour notre deuxième exemple Apache+PHP+MySQL, on créera la table suivante:
mysql> CREATE TABLE ref (
-> date
VARCHAR(20),
-> host
VARCHAR(20),
-> ip VARCHAR(15),
-> os VARCHAR(20),
-> page VARCHAR(30)
-> );
Query OK, 0 rows affected (0.05 sec)
Elle contiendra les informations sur les visiteurs du site. A présent pour quitter tapez simplement quit.
Reportez vous maintenant à la page Apache et au paragraphe correspondant pour la manipulation de ces tables avec Apache+PHP.
Si vous avez perdu le mot de passe root pour le réinitialiser il faut stopper le serveur
systemctl stop mysqld
On redémarre le daemon en désactivant l'identification et l'écoute du réseau (afin d'éviter d'être piraté à ce moment où MySQL est vulnérable) :
/usr/local/mysql/bin/mysqld --user=mysql --skip-grant-tables --skip-networking &
Maintenant on modifie le mot de passe en se connectant à la base mysql
/usr/local/mysql/bin/mysql mysql -u root
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.6.27 Source distribution
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
mysql>UPDATE user SET password=PASSWORD('nouveau-mot-de-passe') WHERE user="root";
Query OK, 4 rows affected (0,06 sec)
Rows matched: 4 Changed: 4 Warnings: 0
On prend en compte les changement en tapant la commande suivante :
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,04 sec)
on relance ensuite le daemon mysqld
systemctl restart mysqld
[Retour page d'accueil FUNIX] | [Retour haut de la page] |