Simplifier l'administration d'un serveur MySQL avec mysql-tools
mysql-tools est un script créé dans le but de simplifier et d'automatiser l'administration courante d'un serveur MySQL. Ce guide présente comment le mettre en place et donne quelques exemples d'utilisation.
Ce guide est testé sur:
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
- Ubuntu 10.04 Lucid Lynx
- Ubuntu 10.10 Natty Narwal
Prérequis
Ce guide recommande:
- un serveur MySQL, comme décrit par Installer et configurer MySQL sur Debian.
Installation
Détectez le proxy de commande (command ou sudo):
cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'
Installez le client MySQL et le générateur de mots de passe apg:
clientDeb='mysql-client'
[ -n "$(command apt-cache pkgnames 'mariadb-client')" ] && clientDeb='mariadb-client'
${cmdProxy} apt-get install "${clientDeb}" 'apg'
Installez le script mysql-tools:
${cmdProxy} wget "https://raw.github.com/biapy/howto.biapy.com/master/mysql/mysql-tools" \ --quiet --no-check-certificate --output-document="/usr/local/bin/mysql-tools" ${cmdProxy} chmod +x "/usr/local/bin/mysql-tools"
Remarque : Cet outil est encore en cours d'élaboration, ses fonctionnalités seront améliorées petit à petit.
Présentation de mysql-tools
Convention de nommage
Voici une proposition de convention de nommage des bases de données.
La décomposition du nom de base de données "ttrss_rss.domaine.com" est:
- ttrss_ : Code de l'application hébergée (ici, Tiny Tiny RSS). Permet de regrouper les bases de données par application dans PHPMyAdmin.
- rss.domaine.com : Nom de domaine où est hébergée l'application utilisant la base de données.
Le nom d'utilisateur pour la base "ttrss_rss.domaine.com" est "t_rss.domaine.com" ou :
- t_ : Première lettre du code d'application (ici t_ est la première lettre de ttrss_).
- rss.domaine.com : Nom de domaine où est hébergée l'application utilisant la base de données.
Le nom d'utilisateur est tronqué aux 17 premiers caractères si le nom de domaine est trop long.
Utilisation
Créer la base de données "DATABASE_NAME" et l'utilisateur "database_name":
# mysql-tools --create="DATABASE_NAME"
Créer la base de données "DATABASE_NAME" avec accès depuis host1 et host2 sur le réseau (en plus de localhost):
# mysql-tools --host="host1" --host="host2" --create="DATABASE_NAME"
Créer un utilisateur sans aucun privilèges (pour Nagios par exemple):
# mysql-tools --adduser="user_name"
Supprimer un utilisateur:
# mysql-tools --deluser="user_name"
Supprimer toutes les tables et vues de la base de données "DATABASE_NAME":
# mysql-tools --empty="DATABASE_NAME"
Supprimer une base de données et son utilisateur dédié:
# mysql-tools --drop="DATABASE_NAME"
Obtenir de l'aide sur l'utilisation avancée de l'outil:
# mysql-tools --help
Remerciements
- Merci GitHub pour l'hébergement du script d'administration de MySQL.
- Merci aux participants à la discussion autour de l'article Drop all tables in a MySQL database (en).