web-dev-qa-db-fra.com

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

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.

33
DrStalker

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 de %, 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.

22
Warner

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

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

La première chose à faire est de fournir à l'utilisateur la permission nécessaire et ici j'ai donné toute permission à 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 Host Name =% et cela signifie que vous pouvez accéder à ce serveur de base de données depuis n'importe quel hôte. Accorder tous les privilèges à l'utilisateur est un gros risque et ce n'est pas une meilleure pratique. De plus, vous pouvez remplacer l'utilisateur 'chaminda' par 'bob'.

10
Chaminda Bandara

La réponse de Warner peut être affinée en utilisant des plages CIDR dans vos spécifications utilisateur (en notation "réseau"/"masque de réseau"), par exemple:

CRÉER UN UTILISATEUR 'bob'@'10.0.0.0/255.0.0.0' IDENTIFIÉ PAR 'password123';

CRÉER UN UTILISATEUR 'bob'@'192.168.0.0/255.255.255.192' IDENTIFIÉ PAR 'password123';

Cette construction permet un contrôle d'accès plus fin. La réponse de Warner permettra à l'utilisateur `` bob '' de se connecter depuis n'importe quel hôte, n'importe où sur votre réseau (ou depuis n'importe quel hôte sur Internet public, si votre serveur est exposé au réseau public), ce qui ne conviendra probablement pas à tous les cas d'utilisation.

Il est de pratique courante d'appliquer la "défense en profondeur", qui est renforcée en limitant l'accès des utilisateurs à partir des adresses d'hôte souhaitées et approuvées uniquement. N'oubliez pas également de limiter les connexions entrantes au niveau de l'hôte en reflétant les adresses d'hôtes souhaitées et approuvées dans votre pare-feu basé sur l'hôte (par exemple, iptables, firewalld, etc.).

0
rosco