servidor - ¿Cómo otorgar acceso remoto a MySQL para una subred completa?
habilitar acceso remoto mariadb (5)
Puedo otorgar acceso a una IP fácilmente usando este código:
$ 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;
Pero necesito permitir que toda la subred 192.168.1. * Acceda a la base de datos de forma remota.
¿Cómo puedo hacer eso?
EDITAR: Considera mirar y votando la respuesta de Malvineous en esta página. Las máscaras de red son una solución mucho más elegante.
Simplemente use un signo de porcentaje como un comodín en la dirección IP.
De http://dev.mysql.com/doc/refman/5.1/en/grant.html
Puede especificar comodines en el nombre de host. Por ejemplo,
user_name@''%.example.com''
aplica auser_name
para cualquier host en el dominioexample.com
, yuser_name@''192.168.1.%''
aplica auser_name
para cualquier host en la subred de clase C192.168.1
.
Solo una nota de una peculiaridad que enfrenté:
Considerar:
db server: 192.168.0.101
web server: 192.168.0.102
Si tiene un usuario definido en mysql.user como ''user''@''192.168.0.102''
con contraseña1 y otro ''user''@''192.168.0.%''
con contraseña2,
entonces,
si intenta conectarse al servidor db desde el servidor web como ''usuario'' con contraseña2,
dará como resultado un error de ''Acceso denegado'' porque la autenticación IP ''user''@''192.168.0.102''
se usa sobre la autenticación ''user''@''192.168.0.%''
comodín.
Solo usarías ''%'' como tu comodín de esta manera:
GRANT ALL ON *.* to root@''192.168.1.%'' IDENTIFIED BY ''your-root-password'';
Parece que también puedes usar una máscara de red , por ejemplo
GRANT ... TO ''user''@''192.168.0.0/255.255.255.0'' IDENTIFIED BY ...
mysql> GRANT ALL ON *.* to root@''192.168.1.%'' IDENTIFIED BY ''your-root-password'';
El carácter comodín es un "%" en lugar de un "*"