Modèle:Installation du serveur mysql pour un simulateur
Installation du serveur MySQL
MySQL est un Système de Gestion de Base de Données (SGBD) utilisé par OpenSimulator. SQLite est le SGBD par défaut des simulateurs OpenSim et vous pouvez utiliser cette solution pour vous simplifier la vie et ainsi éviter l'installation de MySQL. Toutefois, MySQL est beaucoup plus rapide et plus fiable que SQLite. En dehors d'un test et d'une utilisation dilettante d'OpenSimulator, il est préférable d'utiliser MySQL.
Si vous voulez installer plusieurs simulateurs, il faudra créer une base de données par simulateur.
Nous allons voir comment installer MySQL, déplacer son dossier et protéger les mots de passe des bases de données.
Installation du paquet MySQL
Dans le terminal de la machine ou sera installé le simulateur, taper la commande (vous devez avoir les droits d'administration de votre machine) :
sudo apt-get install mysql-server
Un mot de passe vous sera demandé pour le serveur de bases de données. Reportez ce mot de passe dans le tableau des mots de passe.
Vous pouvez créer ce tableau pour l'ensemble des mots de passe de votre installation. Il ne doit pas être publié sur internet.
Déplacement du dossier MySQL
But : utiliser l'espace disque de OpenSim pour préserver l'espace disque du système.
Attention, suivez bien les indications données ci-dessous pour ne pas casser votre installation. Cette opération est faculative.
Normalement les bases de données sont dans /var/lib/mysql/.
Arrêter le serveur MySQL |
sudo service mysql stop |
Créer une copie du dossier
mysql avec les mêmes droits |
sudo cp -aR /var/lib/mysql /var/lib/mysql_old |
Déplacer le dossier mysql dans /home/ |
sudo mv /var/lib/mysql /home/OpenSim |
Faire un lien symbolique
avec le dossier /var/lib/ |
sudo ln -s /home/OpenSim/mysql /var/lib/mysql |
Donner les droits au dossier mysql |
sudo chown -h mysql:mysql /home/OpenSim/mysql |
Éditer le fichier
/etc/apparmor.d/usr.sbin.mysqld |
sudo nano /etc/apparmor.d/usr.sbin.mysqld |
Remplacer |
/var/lib/mysql/ r, /var/lib/mysql/** rwk, par /home/OpenSim/mysql/ r, /home/OpenSim/mysql/** rwk, |
Recharger appamor |
sudo service apparmor reload |
Relancer le serveur MySQL |
sudo service mysql start |
Création de la base de données
- Se connecter à MySQL depuis un terminal en mode administrateur.
mysql -u <utilisateur> -p
Il n'est plus nécessaire de renseigner le mot de passe mais il faut par contre lancer la commande mysql avec l'utilisateur correspondant.
- Depuis l'invite MySQL, créer une base de données.
CREATE DATABASE <Nom de la bdd du simulateur>;
- Créer un utilisateur pour la base de données :
CREATE USER "<Nom de l'utilisateur de la bdd du simulateur>"@"localhost";
- Créer le mot de passe de l'utilisateur.
SET password FOR "<Nom de l'utilisateur de la bdd du simulateur>"@"localhost" = password('<mot de passe>');
ou pour MySQL 8.0 ou supérieur :
SET password FOR "<Nom de l'utilisateur de la bdd du simulateur>"@"localhost" = '<mot de passe>';
- Donner tous les droits sur la base de données à l'utilisateur :
GRANT ALL ON <nom_bdd>.* TO "<Nom de l'utilisateur de la bdd du simulateur>"@"localhost";
- Quitter MySQL
quit
Autre solution
Vous pouvez utiliser Phpmyadmin, interface graphique de connexion à Mysql. Mais cette solution est moins sécurisée.
Pour aller plus loin
Protection des mots de passes
Rôle | Permettre la connexion directe des scripts bash à une base de donnée sans afficher le mot de passe en clair.
Dans ce cas le mot de passe fait partie des options et ne doit pas être appelé dans les scripts. On peut choisir un utilisateur et mot de passe identiques pour tous les bdd des simulateurs pour ne pas utiliser root. |
Installation | Ajouter le fichier .my.cnf dans OpenSim.
cd /OpenSim nano .my.cnf |
Contenu |
<source lang="vim"> [client] host = localhost user = <user> password = *********** socket = /var/run/mysqld/mysqld.sock </source> |
<user> |
Utilisateur qui a le droit de se connecter à la base de données |
password | Mot de passe de l'utilisateur de la base de données |
Droits sur le fichier | chmod 600 OpenSim/.my.cnf |
Mot de passe | voir le tableau des mots de passe. |
Configurations particulières de MySQL
Connexion à une base de données distante
But : communiquer avec votre base de données depuis un serveur distant, c'est à dire depuis une machine autre que celle où est installée le serveur de base de données. Cette configuration est facultative, ne modifiez rien si vous n'en n'avez pas l'utilité.
- Installation :
Dans le fichier /etc/mysql/my.cnf remplacer bind-address 127.0.0.1 par bind-address 0.0.0.0
- Redémarrer le service :
service mysql restart