web-dev-qa-db-fra.com

Comment accorder un accès distant à MySQL pour tout un sous-réseau?

Je peux facilement accorder l'accès à une adresse IP en utilisant ce code:

$ mysql -u root -p
Enter password:    
mysql> use mysql    
mysql> GRANT ALL ON *.* to root@'192.168.1.4' IDENTIFIED BY 'your-root-password';     
mysql> FLUSH PRIVILEGES;

Mais je dois autoriser l’ensemble du sous-réseau 192.168.1. * À accéder à la base de données à distance.

Comment puis je faire ça?

76
skystar7

EDIT: Pensez à consulter et à augmenter le vote Malvineous sur la réponse de cette page. Les masques réseau sont une solution beaucoup plus élégante.


Utilisez simplement un signe de pourcentage comme caractère générique dans l'adresse IP.

De http://dev.mysql.com/doc/refman/5.1/en/grant.html

Vous pouvez spécifier des caractères génériques dans le nom d'hôte. Par exemple, user_name@'%.example.com' s'applique à user_name pour tout hôte dans le example.com domaine, et user_name@'192.168.1.%' s'applique à user_name pour tout hôte dans le 192.168.1 sous-réseau de classe C.

88
p0lar_bear

Il on dirait que vous pouvez également utiliser un masque de résea , par exemple.

GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...
81
Malvineous

Vous utiliseriez simplement '%' comme caractère générique comme ceci:

GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
25
Mike Brant
mysql> GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';  

Le caractère générique est un "%" au lieu d'un "*"

12
David Allen

Juste une note d'une particularité, j'ai fait face:
Considérer:

db server:  192.168.0.101
web server: 192.168.0.102

Si vous avez un utilisateur défini dans mysql.user comme 'user'@'192.168.0.102' avec mot de passe1 et un autre 'user'@'192.168.0.%' avec mot de passe2,

ensuite,

si vous essayez de vous connecter au serveur de base de données à partir du serveur Web en tant qu’utilisateur avec mot de passe2,

il en résultera une erreur 'Accès refusé' car l'adresse IP unique 'user'@'192.168.0.102' L’authentification est utilisée sur le caractère générique 'user'@'192.168.0.%' authentification.

3
site80443