- Modifié
Tutoriel pour installer Mysql et Phpmyadmin sur nginx
MySQL est un système de gestion de bases de données relationnelles (SGBDR). Il est distribué sous une double licence GPL et propriétaire. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels, en concurrence avec Oracle, Informix et Microsoft SQL Server.phpMyAdmin (PMA) est une application Web de gestion pour les systèmes de gestion de base de données MySQL réalisée en PHP et distribuée sous licence GNU GPL.
Cette interface pratique permet d'exécuter, très facilement et sans grandes connaissances dans le domaine des bases de données, de nombreuses requêtes comme les créations de table de données, les insertions, les mises à jour, les suppressions, les modifications de structure de la base de données. Ce système est très pratique pour sauvegarder une base de données sous forme de fichier .sql et ainsi transférer facilement ses données. De plus celui-ci accepte la formulation de requêtes SQL directement en langage SQL, cela permet de tester ses requêtes par exemple lors de la création d'un site et ainsi de gagner un temps précieux.
Pré-requis :
Déroulement :
- Avoir installé nginx sur son serveur dédié
- Avoir installé php5-fpm
- Avoir un accès root
- Installation de mysql
- Création d'un utilisateur pour remplacer root
- Installation de Phpmyadmin
- Mise en place d'un vhost pour accèder à Phpmyadmin en sous-domaine
- Création, Suppression, Utilisation d'une base de données
- Création, Suppression, Modification d'une table dans une base de données
- Importation et exportation d'une base de données en ligne de commande
TODO List :
- Insertion de données dans une table
- Création d'un utilisateur avec Phpmyadmin
- Création d'une base de données avec Phpmyadmin
- Importation d'une base de données sql dans Phpmyadmin
Installation de Mysql
apt-get install mysql-server php5-mysql mysql-common
Indiquez le mot de passe root pour Mysql : 
Puis activer mysql :
mysql_install_db
Pour lancer le script de mise en route : /usr/bin/mysql_secure_installation
Entrez votre mot de passe root.Puis pour les questions répondre comme ceci :
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
Pour plus de sécurité, il faut faire un changement au niveau php :
nano /etc/php5/fpm/php.ini
remplacer : cgi.fix_pathinfo=1
encgi.fix_pathinfo=0
par défaut la ligne est commentée.ensuite :Remarque :
Si ce nombre est maintenu à 1, l'interpréteur PHP fera de son mieux pour traiter le fichier qui est aussi près du fichier demandé que possible. Ceci est un risque de sécurité possible. Si ce nombre est fixé à 0, à l'inverse, l’interpréteur ne traite que le fichier exact, ce qui est beaucoup plus sûr.
nano /etc/php5/fpm/pool.d/www.conf
remplacer : listen = 127.0.0.1:9000
par listen = /var/run/php5-fpm.sock
redémarré php5-fpmservice php5-fpm restart
Création d'un utilisateur avec tous les privilègesEn root :Dans une problématique de sécurité, il est préférable de créer un utilisateur ayant tous les privilèges pour ne pas utiliser root.
mysql -p
Puis : use mysql;
puis : GRANT ALL PRIVILEGES ON *.* TO adminmysql@localhost
IDENTIFIED BY 'lemotdepasse' WITH GRANT OPTION;
puis : FLUSH PRIVILEGES;
Pour vérifier que la création a bien fonctionné :Cela permet d'enregistrer les modifications apportées
select * from user where User='adminmysql';
Vous pouvez maintenant vous connecter en "adminmysql" :mysql -u adminmysql -p
Installation de Phpmyadminapt-get install phpmyadmin
il vous sera demandé quel server web vous voulez utiliser. Malheureusement notre cher nginx ne s'y trouve pas.ne mettez rien.
Web server to reconfigure automatically:
Puis : Configure database for phpmyadmin with dbconfig-common?
Mettre NOfaire un lien symbolique entre le dossier PhpMyAdmin et votre dossier root pour vos applications web :
cd /var/www
ln -s /usr/share/phpmyadmin/ phpmyadmin
Accès à Phpmyadmin en sous-domaine
cd /etc/nginx/sites-enabled
nano phpmyadmin.conf
En HTTP :server {
listen 80;
server_name phpmyadmin.ndd.fr;
index index.html index.php;
charset utf-8;
client_max_body_size 10M;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location ^~ / {
root /var/www/phpmyadmin;
include /etc/nginx/conf.d/php.conf;
include /etc/nginx/conf.d/cache.conf;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last; }
}
En HTTPS : server {
listen 80;
server_name phpmyadmin.ndd.fr;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name phpmyadmin.ndd.fr;
index index.html index.php;
charset utf-8;
client_max_body_size 10M;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location ^~ / {
root /var/www/phpmyadmin;
include /etc/nginx/conf.d/php.conf;
include /etc/nginx/conf.d/cache.conf;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }
}
En HTTPS en ayant suivi le tuto de Meister pour les certificats : server {
listen 80;
server_name phpmyadmin.ndd.fr;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name phpmyadmin.ndd.fr;
index index.html index.php;
charset utf-8;
client_max_body_size 10M;
ssl on;
ssl_certificate /etc/nginx/ssl/sd.ndd_chain.pem;
ssl_certificate_key /etc/nginx/ssl/sd.key.pem;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM;
location ^~ / {
root /var/www/phpmyadmin;
include /etc/nginx/conf.d/php.conf;
include /etc/nginx/conf.d/cache.conf;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
root /usr/share/;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
root /usr/share/;
}
}
location /phpMyAdmin {
rewrite ^/* /phpmyadmin last; }
}
Vous pouvez maintenant accèder à la page de PhpMyAdmin via http://phpmyadmin.ndd.fr ou https://phpmyadmin.ndd.fr
Création, Suppression, Utilisation d'une base de données
Se connecter en root ou utilisateur adminmysql :Remarque :
Sous Mysql il vaut mieux éviter de mettre des accents ou des caractères spéciaux pour les noms de bases ou champs, etc.
mysql -p
ou mysql -u adminmysql -p
CréationCREATE DATABASE mabase CHARACTER SET 'utf8';
SupressionVous pouvez choisir un autre encodage si vous le désirez. L’intérêt est que toutes les tables de la base mabase seront automatiquement converties en 'utf8'.
DROP DATABASE mabase;
Utilisation Pour insérer des tables dans une base de données il faut au préalable la sélectionner
USE mabase;
Création, Suppression, Modification d'une table dans une base de donnéesCréation d'une table
Pré-requis :
- Etre connecté en root ou utilisateur adminmysql
- Avoir créé une base de données
- Avoir sélectionné la base de données pour son utilisation
Pour créer la table :
CREATE TABLE [IF NOT EXISTS] nom_table (
colonne1 description_colonne1,
[colonne2 description_colonne2,
colonne3 description_colonne3,
...,]
[PRIMARY KEY (colonne_clé_primaire)]
)
;
Pour voir toutes les tables de la base de données :Pour avoir plus de précision sur les type d'attribut, regarder ici : Type attributs Mysql
- Nom_table : le nom de votre table
- colonne1 : désignation de l'attribut, exemple : nom
- colonne2 : désignation de l'attribut, exemple : prénom
- description_colonne1 : type de l'attribut, exemple : VARCHAR(20)
- PRIMARY KEY : permet de définir quel attribut sera clé primaire de la table
SHOW TABLES;
Pour voir la table que vous venez de créer : DESCRIBE nom_table;
Suppression d'une table : DROP TABLE nom_table;
Modification d'une table : Ajouter une colonne :
ALTER TABLE nom_table
ADD [COLUMN] nom_colonne description_colonne;
Suppression d'une colonneCOLUMN n'est pas obligatoire, si ce n'est pas précisé dans la requête, Mysql considérera que c'est un ajout de colonne
ALTER TABLE nom_table
DROP [COLUMN] nom_colonne;
Modification du nom d'une colonneALTER TABLE nom_table
MODIFY ancien_nom nouveau_nom description_colonne;
Modification du type d'une colonneATTENTION Il faut toujours mettre description_colonne même si elle reste la même
ALTER TABLE nom_table
MODIFY nom_colonne nouvelle_description;
Importation et exportation d'une base de données en ligne de commandeImportation d'une base
mysql -u monuser -pmonpassword -h localhost maBase < maBase_backup.sql
Exportation d'une basemysqldump -u monuser -pmonpassword -h localhost maBase > maBase_backup.sql
Sources :
Différents topics de mondedie.fr et https://www.digitalocean.com/