MySQL: créer un utilisateur pouvant se connecter à partir de plusieurs hôtes


30

J'utilise MySQL et je dois créer un compte qui peut se connecter depuis l'hôte local ou depuis un autre serveur, c'est-à-dire 10.1.1.1. Je fais donc:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1';

Cela fonctionne bien, mais existe-t-il un moyen plus élégant de créer un compte d'utilisateur lié à plusieurs adresses IP ou doit-il être fait de cette façon?

Ma principale inquiétude est qu'à l'avenir, les autorisations seront mises à jour pour un compte «bob» mais pas pour l'autre.

Réponses:


20

Si vous souhaitez restreindre l'hôte et ne souhaitez pas spécifier en fonction d'un sous-réseau ou d'un caractère générique à l'aide %, c'est la seule façon de le faire. Plus de détails sont disponibles dans la documentation MySQL .

J'essaie toujours de trouver des moyens d'éliminer les frais généraux lors de la gestion de l'authentification auprès des grandes installations MySQL et je n'ai pas encore trouvé de solution parfaite.


8

Commençons par créer un nouvel utilisateur appelé "chaminda" dans le shell MySQL:

CREATE USER 'chaminda'@'%' IDENTIFIED BY 'password';

La première chose à faire est de fournir à l'utilisateur l'autorisation nécessaire et ici, j'ai donné toutes les autorisations à l'utilisateur particulier.

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'%';

Rechargez tous les privilèges.

FLUSH PRIVILEGES;

Si vous souhaitez autoriser la plage d'adresses IP à un utilisateur particulier, utilisez comme suit 10.1.1.%

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'10.1.1.%';

Remarque: Ici nom d'hôte =% et cela signifie que vous pouvez accéder à ce serveur de base de données à partir de n'importe quel hôte. Accorder tous les privilèges à l'utilisateur est un gros risque et ce n'est pas une bonne pratique. De plus, vous pouvez remplacer l'utilisateur «chaminda» par «bob».


5
Cela ne répond pas à la question. Il accorde l'accès à un utilisateur à partir de toutes les adresses IP, mais l'OP demande une manière plus élégante de permettre à un seul utilisateur d'accéder à la base de données à partir d'une liste d'adresses IP. Fondamentalement, au lieu de plusieurs instructions pour ajouter un utilisateur plusieurs fois à partir de plusieurs IP, l'idée est d'ajouter un seul utilisateur qui peut accéder à la base de données à partir de plusieurs IP, ce qui rend la gestion plus facile et moins sujette aux erreurs.
— Anthony

Vous pouvez également utiliser _ comme caractère générique comme 10.1.1.1__ pour correspondre à 100 -199, mais pour 200, vous devez créer un compte séparé ou utiliser le caractère générique% et inclure également 0-99 et 201-255
— Chaminda Bandara

-3

MySQL autorise plusieurs caractères génériques sur une même ligne. Une solution possible consiste à définir l'hôte pour que l'utilisateur Bobsoit

locahost/10.1.1.1

Référence:

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html


Ce n'est pas ce que dit la documentation. Comme indiqué dans le tableau, le /255.255.255.0 est un masque de réseau. S'il existe un moyen de répertorier plusieurs caractères génériques dans la définition d'hôte, ce n'est pas le cas.
— majikman
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.