Puedo otorgar acceso fácilmente a una IP 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?
Eso parece que también se puede utilizar una máscara de red , por ejemplo,
GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...
fuente
192.160.0.34/255.255.255.0
es el mismo192.168.0.34/24
que realmente no tiene sentido (/24
significa que el último número puede ser de 0 a 255, ignorando su valor de 34). ¿Funciona si usa una máscara válida para la IP, como192.168.0.34/255.255.255.252
?Solo usaría '%' como su comodín de esta manera:
GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
fuente
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 "*"
fuente
Solo una nota de una peculiaridad que enfrenté:
Considere:
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,
resultará en un error de 'Acceso denegado' porque la
'user'@'192.168.0.102'
autenticación de IP única se usa sobre la'user'@'192.168.0.%'
autenticación de comodín .fuente
después de conectar el servidor y desea conectarse en su host, debe seguir los pasos a continuación:
GRANT ALL ON . to root@'write_your_ip_addres' IDENTIFIED BY 'write_password_to_connect'
nano /etc/mysql/my.cnf
service mysql restart
fuente
Motivado por la respuesta de @Malvineaus, lo probé yo mismo y noté que no funcionó para mí.
Puede especificar máscaras de subred con '192.168.1.%' O '192.168.1.0/255.255.255.0' pero la subred debe estar siempre en octetos completos. consulte https://mariadb.com/kb/en/create-user/#host-name-component . Como resultado, la funcionalidad entre una forma de especificación y la otra es la misma.
Por ejemplo, '192.168.1.0/255.255.255.128' no funcionará porque no se encuentra en un límite de octeto completo.
fuente