Mysqld multi

Bonjour,

je tente désespérément d’utiliser mysqld multi, mais quand je le lance: mysqld_multi start 1 ou 1,2 rien ne se passe, et mysql est off, je n’ai aucun fichier pid, je ne trouve pas de mysql dans htop. les logs restent vide (mais ça même avec mysql tout court et les logs activés ils restent vides …)

Voilà mon fichier de config:

[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_user
password = mypass

[mysqld1]
datadir=/var/lib/mysql1
socket=/var/lib/mysql1/mysql.sock1
port=3333
old_passwords=1
err-log=/var/log/mysqld1.log
pid-file=/var/run/mysqld/mysqld.pid1
user = mysql

[mysqld2]
datadir=/var/lib/mysql2
socket=/var/lib/mysql2/mysql.sock2
port=3307
old_passwords=1
err-log=/var/log/mysqld2.log
pid-file=/var/run/mysqld/mysqld.pid2
user = mysql

configuration serveur maître

[mysql.server]
user=mysql
basedir=/var/lib

Merci pour l’aide.

Juste par curiosité, quel est l’intérêt d’avoir plusieurs instances de serveur mysql sur la même machine ?

Bonjour,

pour séparer physiquement la base de données du site et des clients.

voilà ^^

[quote=“Niloo”]Juste par curiosité, quel est l’intérêt d’avoir plusieurs instances de serveur mysql sur la même machine ?[/quote]Il existe de multiples raisons :

  • sécurité: l’administration d’une instance n’affecte pas l’autre instance (les autres instances) et les privilèges octroyés sur une instance n’ont aucun effet sur l’autre instance (les autres instances). e.g.: le root d’une instance n’est pas le root d’une autre instance,
  • pas de jointure ou de clefs externes possibles entre instance(s), cela permet mieux de mieux isoler les données et de mieux les compartimenter. e.g.: une instance est dédiée aux transactions bancaires avec le numéro des cartes bancaires, alors que l’autre instance gère le catalogue et les clients.
  • etc.

Merci de vos réponses mais je ne suis pas convaincu.
Une seule instance MySQL gère très bien la séparation des privilèges.

Mon cas est simple j’ai des scripts en PHP qui créent des utilisateurs et des base de données.

Je n’arrive pas à créé d’autres utilisateurs et leur donner les droits sur leur base sans utiliser le login ROOT.

je ne veut pas utiliser le login root pour traiter une base de données sensible.

voilà pourquoi je veut deux serveurs SQL bien distingués.

Si vous avez une solution pour créer des BDD avec le grant sans ROOT je suis ouvert, voilà le script en question:

						$bdd_host = ';
						$bdd_name = 'temp';
						$bdd_user = '';
						$bdd_passwd = '';
		
						$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
						$bdd_mysql = new PDO('mysql:host='. $bdd_host .';dbname=' . $bdd_name, $bdd_user, $bdd_passwd, $pdo_options);
			
						$bdd_mysql->exec('CREATE DATABASE IF NOT EXISTS '.$login_sql);
							
						$bdd_mysql->exec('GRANT ALL PRIVILEGES ON '.$login_sql.'.* TO "'.$login_sql.'"@"%" IDENTIFIED BY "'.$pass_mysql.'" WITH GRANT OPTION');

Je n’en ai jamais eu besoin, mais d’après la doc :

devrait le permettre.

@ Niloo :
un truc tout simple : tu peux avoir un slave sur une deuxième instance …

Sur la même machine je ne vois pas l’intérêt à part plomber les performances.