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.

DrStalker
la source

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.

Warner
la source
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».

Chaminda Bandara
la source
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

GabrielC
la source
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