18/11/2024

Mysql

Base de donnéesServices

Installation/Upgrade MySQL 5.1 vers 5.6 sous CentOS 6

I. Présentation Dans ce tutoriel, nous allons voir la procédure pour mettre à jour ou MySQL version 5.1 (version standard dans la plupart des distributions stables) vers la version 5.5 ou plus simplement installer la version 5.6 si aucune version précédente n’est présente. Nous verrons le détail de cette procédure sous un CentOS 6. Note importante : Par sécurité, je vous conseille vivement de sauvegarder vos bases de données avant toute manipulation afin d’être capable de les restaurer en cas de corruption ou autre problème, je vous oriente vers ce tutoriel pour le faire rapidement. Une fois le backup effectué, nous pouvons commencer par vérifier la version actuelle de notre serveur MySQL (dans le contexte d’une mise à jour, n’effectuez pas cette commande si aucun MySQL n’est installé). On se connecte pour cela en ligne de commande à notre serveur : mysql -u root -p On voit donc ici que nous sommes en version 5.1. II. Téléchargement des dépôts et

Lire cet article
Base de données

Installation/Upgrade MySQL 5.1 vers 5.5 sous CentOS 6

I. Présentation Dans ce tutoriel, nous allons voir la procédure pour mettre à jour ou MySQL version 5.1 (version standard dans la plupart des distributions stables) vers la version 5.5 ou plus simplement installer la version 5.5 si aucune version précédente n’est présente. Nous verrons le détail de cette procédure sous un CentOS 6. Note importante : Par sécurité, je vous conseille vivement de sauvegarder vos bases de données avant toute manipulation afin d’être capable de les restaurer en cas de corruption ou autre problème, je vous oriente vers un de nos tutoriel traitant de la sauvegarde rapide en ligne de commande de base de données MySQL Une fois le backup effectué, nous pouvons commencer par vérifier la version actuelle de notre serveur MySQL (dans le contexte d’une mise à jour, n’effectuez pas cette commande si aucun MySQL n’est installé). On se connecte pour cela en ligne de commande à notre serveur : mysql -u root -p On voit donc

Lire cet article
Base de donnéesCommandes et Système

Sauvegarder une base de données rapidement sous MySQL avec mysqldump

I. Présentation Dans un précédent tutoriel, je vous avais présenté un script qui permettait de sauvegarder une base ou un ensemble de bases de données MySQL. Ce script peut être un peu trop complexe pour une utilisation plus simple de l’outil de sauvegarde disponible nativement dans MySQL, je vais donc vous rappeler ici comment sauvegarder rapidement une base de données MySQL sous Linux en ligne de commande. II. Commande MySQLDump On va donc utiliser la commande MySQLDump qui permet de sauvegarder une base de données pour la stocker dans un fichier .sql que l’on pourra réintégrer plus tard. En somme le fichier .sql contiendra un ensemble de commandes qui, quand il sera lu par MySQL, remettra les données à leur état d’origine (quand elles ont été sauvegardées). MySQLDump est donc directement inclus lors de l’installation d’un serveur mysql. Supposons que l’on souhaite sauvegarder la base de données « web01 » dans le fichier « web01_jeudi19nov.sql », on utilisera la commande suivante : mysqldump -u

Lire cet article
Base de données

Importer des données en SQL avec LOAD DATA INFILE

I. Présentation Dans ce tutoriel, nous allons apprendre à importer des données avec la commande « LOAD DATA INFILE » qui permet d’aller chercher des données dans un fichier txt, csv ou autre pour les importer dans une structure de table SQL déjà construite. Dans un précédent tutoriel, nous avions déjà vu comment importer des données dans une base de données MySQL à l’aide d’un fichier au format « .sql » qui doit contenir un ensemble de commande du langage SQL. L’avantage de la commande LOAD DATA INFILE est que le fichier lu ne doit pas avoir un contenu de commande SQL pour que les informations soit importées. Pour exemple, un fichier SQL qui peut être importé doit contenir des requêtes INSERT de ce type INSERT INTO Table (champ1, champ2) VALUES ( « valeur1 », « valeur2 »); Ce qui peut être compliqué si les données à importer ne sont pas présentée et structurée en SQL. La commande LOAD DATA INFILE permet elle d’importer des informations présentées comme

Lire cet article
Base de données

Désactiver l’historique MySQL

I. Présentation MySQL dispose d’un historique de commande par client. Cela permet, comme sous le bash Linux, de retrouver les commandes passées aux précédentes connexions et ainsi de les rejouer facilement. Cela peut donc être pratique mais aussi présenter un problème de sécurité majeur si l’accès au compte d’un client n’est pas sur. Dans ce tutoriel, nous allons donc voir les danger de l’historique MySQL et également voir une solution de protection contre ce problème. Pour information, le tutoriel est illustré avec une machine Debian 7 sous VirtualBox et avec un serveur MySQL 5.5 installé depuis les dépôts. II. Problématique de l’historique MySQL Nous allons ici supposer qu’un attaquant a réussi à obtenir l’accès SSH d’un utilisateur se connectant régulièrement au serveur MySQL. L’attaquant ayant les droits sur le répertoire « /home/user » de l’utilisateur, il pourra très facilement lire le fichier « .mysql_history » qui contient comme dit précédemment les commandes passées par l’utilisateur sur ses sessions MySQL. cat ~/.mysql_history  Note : Sous

Lire cet article
Base de données

Personnaliser le terminal MySQL

I. Présentation Dans ce tutoriel, nous allons apprendre à personnaliser le prompt (terminal) présent sur le serveur MySQL de base lorsque nous l’utilisation en CLI (Ligne de commande). Le terminal de base CLI MySQL est en effet assez rudimentaire, il ne fournis aucune information mis à part le fait que nous sommes bien connecté au serveur MySQL : Nous pourrions en effet vouloir avoir des informations supplémentaires comme la date, l’utilisateur avec lequel nous sommes connecté, le serveur, etc. II. Procédure pour un changement temporaire Il est en effet possible sur ce terminal MySQL d’afficher des informations beaucoup plus intéressantes, on peut par exemple afficher le nom de l’utilisateur connecté et le nom du serveur comme suivant : Lorsque nous sommes connecté à une session CLI MySQL, il faut pour avoir ce terminal saisir la commande suivante : \R \u@\h > La déclaration du changement d’apparence du prompt se fait avec « \R », les valeurs qui suivent sont soit des caractères

Lire cet article
Base de données

Changer l’emplacement des bases de données MySQL

I. Présentation Par défaut, les bases de données (en tant que fichier) sont stockées dans « /var/lib/mysql/ » sous Linux. Pour des questions d’organisation, de sécurité ou de place, il est peut être intéressant de changer l’emplacement de ces bases de données vers un autre dossier/ chemin. Nous allons voir dans ce tutoriel que cela est possible directement dans la configuration de MySQL. II. Repérer où sont les bases de données Dans un premier temps, nous allons voir où sont situées nos bases de données selon la configuration de notre serveur MySQL. On se rend pour cela dans le fichier « /etc/mysql/my.cnf » : On trouvera alors le champ « datadir » qui pointe par défaut vers « /var/lib/mysql ». Afin de vérifier cette information, nous allons aller dans ce dossier pour voir les bases de données présentes et surtout leurs permissions : ls -al /var/lib/mysql Nous aurons alors un résultat de ce type : Ici, une base de données est représentées par un dossier (comme « mysql » ou

Lire cet article
Actu Cybersécurité

Vulnérabilités dans MySQL 5.5

Plusieurs vulnérabilités référencées CVE ont étaient trouvées au sein du paquet mysql-5.5 correspondant au serveur de base de données MySQL. Les vulnérabilités sont référencées dans le dictionnaires CVE avec les références suivantes : – CVE-2013-1502, – CVE-2013-1511, – CVE-2013-1532, – CVE-2013-1544, – CVE-2013-2375, – CVE-2013-2376, – CVE-2013-2389, – CVE-2013-2391, – CVE-2013-2392. Afin de protéger votre serveur, il est recommandé de mettre à jour votre version vers la 5.5.31. Elle permet en plus une amélioration des performances et corrige des défauts quant aux pertes de données. En ce qui concerne la version stable de Debian, à savoir Wheezy, la version est 5.5.31+dfsg-0+wheezy1. Pour ceux qui seraient sur la version unstable, appliquez la version 5.5.31+dfsg-1. Ces vulnérabilités touchent notamment à la disponibilité de votre serveur qui peut être affectée notamment grâce à la manipulation des vecteurs par un utilisateur connecté. Pour plus d’informations, n’hésitez pas à consulter chacun des CVE.

Lire cet article
Base de données

La gestion des droits avec la console SQL

I. Présentation La gestion des droits est incontournable en matière de sécurité et pour définir les actions que l’utilisateur a le droit de faire et de ne pas faire. En SQL, il y a 4 droits/privilèges principaux que l’on peut attribuer à un utilisateur. Il peut avoir le droit de sélectionner des données dans des tables grâce au « SELECT », d’ajouter des valeurs dans les tables grâce à « INSERT » , de supprimer des données grâce à la commande « DELETE » et d’en mettre à jour en utilisant « UPDATE ». Il est possible de gérer ces droits via l’interface PHPMyAdmin mais aussi à partir de la console MySQL, c’est ce que nous allons dans ce tutoriel. II. Informations sur le serveur et la base de données utilisée Serveur : localhost (127.0.0.1) Serveur web : WAMP Base de données : neoflow_bdd Table : table1 Utilisateurs : root et invite III. Exécutez la console Avec une Invite de

Lire cet article
AutresCommandes et SystèmeServices

Installer un serveur LEMP (Linux EngineX MySQL PHP)

I. Présentation Un serveur LEMP (Linux EngineX MySQL PHP) est un serveur web comportant 4 composants qui sont :  Un système d’exploitation Linux (wheezy dans notre cas)   NginX pour gérer la communication entre le serveur et les clients.   MySQL pour toute la partie base de données.   PHP pour rendre le tout dynamique. Grâce à un serveur LEMP vous pouvez créer un site web dynamique grâce au PHP et à la base de données MySQL, étant donné qu’il contient tout les éléments nécessaires à la mise en place d’un site web dynamique. Un serveur LEMP regroupe plusieurs éléments qui en font un service complet et stable. Il faut savoir qu’un serveur LEMP est différent d’un serveur LAMP seulement car il utilise NginX en serveur web plutôt qu’Apache. NginX est un serveur web de plus en plus utilisé notamment pour ses performances par rapport à Apache 2. II. Mise à jours des paquets On va commencer par mettre à

Lire cet article
Base de données

Réplication en temps réel Master/Slave MySQL

I. Présentation L’importance des serveurs de base de données et des bases de données elles même dans un système d’information est capital à son bon fonctionnement tant au niveau applicatif qu’au niveau des lectures par les serveurs web. C’est pourquoi il est important, dans une optique de sécurité et de disponibilité de l’information, d’avoir un processus à la fois de réplication des informations en temps réel mais aussi de tolérance de panne. Plus précisément, si un serveur dit « Master » tombe, un autre serveur « Slave » doit prendre le relais de manière immédiate et doit aussi avoir la dernière version des informations. Dans ce tutoriel, nous allons apprendre à mettre en place une réplication des bases de données en temps réel entre un serveur dit « Master » qui va recevoir les processus d’écriture et de lecture et un serveur « Slave » qui se chargera de se mettre à jour selon les modifications faites sur le « Master » afin qu’il dispose des dernières versions des informations

Lire cet article
Base de données

Erreur MysQL : Table is marked as crashed and should be repaired

I. Présentation Il peut arriver que vous ayez à faire face à l’erreur « Table is marked as crashed and should be repaired » lors de la manipulation des tables MySQL. II. Pourquoi cette erreur Cette erreur et avertissement peut avoir plusieurs sources. Elle indique la table en question est corrompue et qu’elle doit être réparée. Cela peut être dû à un problème d’espace disque sur la partition où se situe la base de données, à un problème d’extinction de la base de données lors d’une lecture ou d’une écriture d’informations ou alors plus couramment à un problème physique sur le support de stockage, une extinction non prévue, etc .. III. Réparer une table corrompue Nous pouvons le faire grâce à PhpmyAdmin dans un premier temps. Il faut se rendre dans le PhpMyAdmin pour réparer la table (l’opération est aussi faisable en ligne de commande sur le serveur MySQL). On doit ensuite se loguer puis se rendre dans la base de données

Lire cet article
Base de données

Voir les droits utilisateur dans MySQL en ligne de commande 

I. Présentation Dans ce tutoriel, nous allons voir comment afficher les droits et permissions d’un utilisateur MySQL en ligne de commande. Le plus souvent, on utilise PhpMyAdmin pour gérer les droits utilisateurs mais il est aussi facile et rapide de le faire en ligne de commande (CLI) Nous allons ici utiliser la commande « show grants » qui sert à afficher les droits d’un utilisateur sur les bases d’un serveur. Il est important de savoir que pour utiliser cette commande, le minimum des droits requis est celui de faire un « select » sur la base de données « mysql » du serveur MySQL. II. Voir les utilisateurs disponibles Nous allons, dans un premier temps, regarder quels sont les utilisateurs présents sur notre serveur après s’être connecté en « root » en ligne de commande : select user,host from mysql.user; Nous aurons alors la liste des utilisateurs ainsi que les hôtes depuis lesquels ils peuvent se connecter. III. Voir nos bases de données Nous allons maintenant chercher à

Lire cet article
Base de données

Changer le nom de l’utilisateur root MySQL

I. Présentation Par défaut, MySQL créé, lors de son installation, un super-utilisateur nommé « root ». Cet utilisateur a tous les droits sur toutes les bases de données du serveur. Si un utilisateur doit être ciblé lors d’une attaque sur un service MySQL, c’est bien celui-ci. En effet, si on arrive à avoir les identifiants de cet utilisateur (login et mot de passe), on aura un accès total à toutes les bases de données. Dés le départ, un attaquant peut démarrer une attaque avec 50% des informations requises : le nom de l’utilisateur (« root »). Pour rendre plus difficile et plus lente la tâche d’un attaquant, nous allons modifier le nom de cet utilisateur pour que l’utilisateur « root » n’existe plus. Ainsi, en plus de devoir trouver un mot de passe, l’attaquant devra commencer par trouver l’identifiant du super-utilisateur de notre service MySQL. II. Voir les utilisateurs existants Nous allons commencer par vérifier quel utilisateur est présent sur notre service MySQL. On se connecte

Lire cet article