Bonjour,
Déjà je ne comprends pas trop l'intérêt de faire fonctionner plusieurs instances de mysql sur le même système. A partir du moment où on isole correctement ses utilisateurs et des bases de données, en fournissant à chaque utilisateur des restrictions sur les privilèges, il n'y a aucun problème de sécurité à utiliser la même instance du serveur mysql. Dans ce cas chaque site n'aura accès qu'à sa (ses) base(s). Par ailleurs, plusieurs instances d'un serveur mysql est plus coûteux en termes de ressources qu'une seule instance avec privilèges isolés.
Concernant la question, et si tu persistes à vouloir utiliser ce setup, cela dépend de comment est exécuté PHP (CGI ? FastCGI ? PHP-FPM ? Module Apache filter PHP ? Module Apache PHP ?).
1/ Dans le cas le plus courant (module apache PHP), cela peut se faire dans la configuration Apache via une directive php_value ou php_admin_value pour différencier les directives de configuration passées à chaque site
2/ Cela peut se faire également dans le code du site via un appel à ini_set() ou lors de l'appel à mysqli_connect()
3/ Dans le cas où tu ne veux pas modifier directement le code de l'application, tu peux inclure automatiquement un script PHP lors de l'exécution de chaque site (directive auto_prepend_file) et discriminer dans ce script le port à utiliser pour chaque site:
switch($_SERVER['HTTP_HOST']) {
case 'site1.domain.tld':
case 'site2.domain.tld':
ini_set('mysqli.port', 3307);
break;
case 'site3.domain.tld',
ini_set('mysqli.port', 3308);
break;
...
default:
break;
}
Mais comme je le disais au tout début, ce sera beaucoup plus simple de tout faire tourner sur le même serveur avec des privilèges appropriés !
Cordialement