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?
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 leexample.com
domaine, etuser_name@'192.168.1.%'
s'applique àuser_name
pour tout hôte dans le192.168.1
sous-réseau de classe C.
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 ...
Vous utiliseriez simplement '%' comme caractère générique comme ceci:
GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
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 "*"
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.