114 votes

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

Je peux facilement accorder l'accès à une 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 permettre à l'ensemble du sous-réseau 192.168.1.* d'accéder à la base de données à distance.

Comment puis-je faire ça ?

155voto

Malvineous Points 2416

Il On dirait que vous pouvez aussi utiliser un masque de réseau. par exemple

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

116voto

p0lar_bear Points 1352

EDIT : Envisagez de regarder et d'upvoter Malvoisin La réponse de l'auteur sur cette page. Les netmasks sont une solution beaucoup plus élégante.


Il suffit d'utiliser le signe pour cent comme caractère de remplacement dans l'adresse IP.

En 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 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.

35voto

Mike Brant Points 39322

Il suffit d'utiliser le caractère générique "%" comme ceci :

GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';

17voto

David Allen Points 760
mysql> GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';  

Le caractère de remplacement est un "%" au lieu d'un "*".

9voto

site80443 Points 56

Juste une note sur une particularité à laquelle j'ai été confronté :
Pensez-y :

db server:  192.168.0.101
web server: 192.168.0.102

Si vous avez un utilisateur défini dans mysql.user en tant que 'user'@'192.168.0.102' avec le mot de passe1 et un autre 'user'@'192.168.0.%' avec le mot de passe 2,

alors,

si vous essayez de vous connecter au serveur de données à partir du serveur Web en tant qu'"utilisateur" avec le mot de passe 2,

il en résultera une erreur "Accès refusé" parce que l'unique IP 'user'@'192.168.0.102' l'authentification est utilisée sur le joker 'user'@'192.168.0.%' l'authentification.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X