mysql

Mysql : identifier les tables manquantes entre 2 bases de données

Un petit article pratique assez générique pour une fois.

Pour un projet récent il fallait que je puisse détecter les tables manquantes entre une base de données « native » et la base de données du projet.

Il existe un certain nombre de logiciels qui le permettent mais je n’en avais pas sous la main.
Navicat permets d’identifier les tables concernées mais pas d’en exporter la liste.

La solution donnée ici permettra de faire tout en ligne de commandes ( linux )

J’ai utilisé l’outil https://github.com/DBDiff/DBDiff comme base.

Il faut commencer par télécharger le phar

wget https://github.com/DBDiff/DBDiff/releases/download/v1.0.0/dbdiff.phar

Ajouter les droits d’exécution au fichier.
Il faut ensuite configurer une connexion pour l’outil dbdiff ( dans le même dossier ou vous allez placer le phar )
Pour cela il faut créer un fichier .dbdiff ( attention au . devant ) avec les identifiants de connexions

server1:
  user: user
  password: password
  port: 3306 # for MySQL this is 3306
  host: 127.0.0.1 # usually localhost or 127.0.0.1
#Mettre la configuration des autres serveurs si nécessaires
server x:

L’outil dbdiff permets ensuite de générer nativement un fichier sql récapitulatif des différences via la commande :

.

Mysql : identifier les tables manquantes entre 2 bases de données Lire la suite »

Utiliser plusieurs version mysql avec docker

J’ai récemment souhaité tester un module sur d’anciennes version de prestashop, mais celle-ci ne fonctionnaient pas correctement avec mysql 5.7 qui est installé par défaut sur mon serveur de développement ( basé sur ubuntu 16.04 )

Ce service devant tourner de manière ponctuelle, l’installer en doublon de la version 5.6 n’était pas une option.
La solution la plus simple est donc d’utiliser docker, nous allons voir comment avoir un autre serveur de base de données avec la version 5.6 en quelques minutes 🙂

Installation de docker

Pour cela je vous envoie vers la documentation officielle qui explique tout très bien : https://docs.docker.com/install/linux/docker-ce/ubuntu/#extra-steps-for-aufs

Installer docker-compose

sudo apt-get install docker-compose

Création du fichier docker-compose

Pour le ranger j’ai  créer un dossier /mysql56 dans mon dossier home

mkdir ~/mysql56

Dans lequel on va créer un dossier /data qui contiendra le contenu des bases de données du container.
Ceci permettra de persister les données en éteignant le container.…

Utiliser plusieurs version mysql avec docker Lire la suite »

Mise en place d’une réplication mysql

Dans le cadre de site à forts traffics, de la préparation d’une migration ou d’une politique de sauvegarde, il est possible de mettre en place une réplication mysql.

Nous allons voir ensemble comment mettre en place une réplication de type master / slave sur des distribution de type debian / ubuntu.

Il est possible de jouer la réplication sur autant de serveur slaves que souhaités.

Cette procédure nécessitera des redémarages de mysql

 

Préparation du serveur master.

Pour commencer il est nécessaire de créer un utilisateur mysql :

Pour plus de sécurité nous restreindrons l’accès à une ip particulière via la commande suivante a éxécuter avec un utilisateur ayant tous les droits.

CREATE USER 'my-replication-user'@'hostname-de-votre-serveur' IDENTIFIED BY 'some_pass';

Il faut ensuite ajouter à cet utilisateur les droits de réplication :

GRANT REPLICATION SLAVE ON *.* TO 'my-replication-user'@'hostname-de-votre-serveur';

Il faudra ensuite activer la conservation des fichiers de logs sur le serveur.…

Mise en place d’une réplication mysql Lire la suite »

Alternative à phpMyAdmin : Adminer

Un petit article pour présenter un outil qui m’a fait gagner pas mal de temps récemment : Adminer
Cet outil, tout comme PhpMyAdmin permets de gérer les bases de données de votre hébergement via une interface web.

En général, phpmyadmin est installé directement par l’hébergeur et c’est l’outil utilisé par défaut pour gérer les bases de données.
Cependant il peut arriver que des hébergeurs ne le proposent pas.
Dans ce cas l’utilisation d’Adminer est la solution la plus simple et la plus rapide.

Comment ça marche ? :

  • Télécharger le fichier adminer.php depuis le site https://www.adminer.org/
  • Envoyer le via ftp n’importe ou sur votre hébergement.
  • Accéder au fichier depuis un navigateur web

Adminer

Et oui rien de plus à faire 🙂

Note :
Pour plus de sécurité renommez ce fichier en autre chose que adminer.php 😉…

Alternative à phpMyAdmin : Adminer Lire la suite »

Ovh mutualisé copier une base de données dans une autre avec ssh

Voici un petit script bash qui vous permettra de copier facilement le contenu d’une base de données à une autre depuis un hébergement mutualisé ovh.
( Ce script fonctionne uniquement à partir des hébergements pro, car il nécessite un accès ssh )
Le déroulé du script est le suivant :

  • Export de la bdd à copier
  • Sauvegarde de la bdd de destination
  • Suppression des données de la bdd de destination
  • Insertion des données de la bdd à copier dans la bdd de destination
#!/bin/bash
 
#Saisir les paramètres des bases de données
serveurProd="mysql.ovh"
userProd="user"
passProd="password"
 
serveurPreprod="mysql.preprod"
userPreprod="preprod"
passPreprod="preprod"
 
#Export de la base de donnees de prod
echo "Sauvegarde base de prod"
mysqldump --host=$serveurProd --user=$userProd --password=$passProd $userProd | gzip > backup-prod_$(date +"%Y-%m-%d").sql.gzip
 
#Sauvegarde de la base de donnees de preprod
echo "Sauvegarde base de preprod"
mysqldump --host=$serveurPreprod --user=$userPreprod --password=$passPreprod $userPreprod | gzip > backup-preprod_$(date +"%Y-%m-%d").sql.gzip

Ovh mutualisé copier une base de données dans une autre avec ssh Lire la suite »

Déplacer les fichiers mysql vers un nouvel emplacement

Par défaut sur les serveurs kimsufi livré par ovh, la partition « / » allouée au système est relativement réduite. ( 20 Go  dans mon cas )
Sur mon serveur cette partition était quasiment pleine, et une grande partie de l’espace était occupée par les fichiers des bases de données.
( dossier /var/lib/mysql/)

Voici donc comment procéder pour déplacer ces fichiers et libérer de l’espace pour votre système.

Nous allons déplacer les fichiers de /var/lib/mysql/ vers /home/mysql/

Pour commencer il faut arrêter mysql

sudo service mysql stop

Nous pouvons ensuite déplacer les fichiers vers le nouvel emplacement ( Cette opération peut être assez longue en fonction du volume de données à transférer)

sudo mv /var/lib/mysql/ /home/mysql/

Puis mettre un lien symbolique de /home/mysql/ vers /var/lib/mysql/

sudo ln -s /home/mysql /var/lib/mysql

Il faut ensuite attribuer les droits du dossier à l’utilisateur mysql

sudo chown mysql:mysql /home/mysql

Il ne vous reste plus qu’a redémarrer msyql

sudo service mysql start

Les fichiers de mysql sont à présent à l’emplacement « home/mysql » et votre partition système retrouve de la place !…

Déplacer les fichiers mysql vers un nouvel emplacement Lire la suite »

Munin : Ajouter des plugins complémentaires

Après avoir installé munin, il y’a quelques semaines et afin d’optimiser le monitoring de mon serveur, j’ai souhaité installer des modules complémentaires.

Voici donc comment procéder pour installer des plugins sur munin.

Pour voir la liste des modules complémentaires de munin, entrez la commande suivante :

sudo munin-node-configure

Pour ma part j’ai activé le modules suivants : ( lié aux programmes fai2ban, postfix et à mysql )
– fail2ban
– postfix_mailqueue
– postfix_mailstats
– postfix_mailvolume
– mysql_queries
– mysql_slowqueries
– mysql_threads

Voici comment les activer

Fail2ban :

sudo  ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugins/fail2ban

Postfix :

sudo  ln -s /usr/share/munin/plugins/postfix_mailqueue /etc/munin/plugins/postfix_mailqueue
sudo  ln -s /usr/share/munin/plugins/postfix_mailvolume /etc/munin/plugins/postfix_mailvolume
sudo  ln -s /usr/share/munin/plugins/postfix_mailstats /etc/munin/plugins/postfix_mailstats

Pour Mysql il est nécessaire d’installer des packets complémentaires de cache via la commande suivante

sudo apt-get install libcache-{perl,cache-perl}

Puis

sudo  ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
sudo  ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
sudo  ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads

Editez ensuite le fichier /etc/munin/plugin-conf.d/munin-node…

Munin : Ajouter des plugins complémentaires Lire la suite »

Créer un utilisateur mysql avec PhpMyAdmin

( Cet article suppose que vous avez phpmyadmin d’installé sur le serveur, et les accès pour vous identifier en root a PhpMyAdmin, si PhpMyAdmin n’est pas installé vous pouvez consulter le tutoriel suivant : installer phpmyadmin

– Par défaut lors de l’installation de votre serveur, seul un utilisateur root avec des accès complets est créé.
Si vous souhaitez installer de multiples sites sur votre serveur, il n’est donc pas sécurisé d’utiliser le compte root par défaut pour tous vos sites.

Nous allons donc voir comment créer un utilisateur supplémentaire avec uniquement les droits nécessaires au bon fonctionnement d’un site web via l’interface PhpMyadmin

Connectez vous à PhpMyAdmin avec l’utilisateur root

Puis rendez-vous dans l’onglet « Utilisateurs »
phpmyadmin-utilisateur

Cliquer ensuite le bouton « Ajouter un utilisateur »

phpmyadmin-utilisateur-2

Le formulaire de création de compte apparait :

phpmyadmin-utilisateur-3

Renseignez :

  • nom d’utilisateur
  • mot de passe
  • confirmation mot de passe
  • client : local ( pour des raisons de sécurité, n’authorise que les connexions depuis le serveur lui-même )

Au niveau des droits d’accès, comme nous souhaitons une utilisation web :

  • Tous les droits sur la section « Données « 
  • Les droits suivants sur la section « Structure » : CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES
  • Aucun droits sur la section « administration »

Concernant les limites de ressources, libre à vous de les configurer en fonction de l’utilisation de votre serveur.…

Créer un utilisateur mysql avec PhpMyAdmin Lire la suite »

Ubuntu Server 14.04 « Trusty Tahr » : Installation d’apache, php et mysql ( lamp)

Une fois notre utilisateur principal créé : ( cf. création d’un utilisateur avec des droits d’administration  ) , l’utilisation principale de mon serveur étant du web il est temps d’installer les éléments nécessaires : Apache , Php et Mysql

Avant toute installation n’oubliez pas d’actualiser les dépendances Ubuntu avec la commande

sudo apt-get update

 – Apache

Apache est le serveur http, il se chargera de transmettre les demandes des visiteurs au serveur et d’afficher les pages.

entrez la commande suivante pour installer apache :

sudo apt-get install apache2

Une fois apache installé vous devez pouvoir accéder à votre machine directement depuis son ip et obtenir la page suivante

install-apache-ok

http://votre.ip.serveur/

  – Php

Php est le langage dans lequel seront programmées vos page ( il peut y en avoir d’autres 🙂 )

Entrer la commande suivante

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

(l’extension mcrypt pose un problème sur cette version d’ubuntu, voir en fin d’article comment le corriger.)…

Ubuntu Server 14.04 « Trusty Tahr » : Installation d’apache, php et mysql ( lamp) Lire la suite »