Posso facilmente conceder acesso a um 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;
Mas preciso permitir que toda a sub-rede 192.168.1. * Acesse o banco de dados remotamente.
Como eu posso fazer isso?
Ele parece que você também pode usar uma máscara de rede , por exemplo,
GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...
fonte
192.160.0.34/255.255.255.0
é o mesmo192.168.0.34/24
que não faz sentido (/24
significa que o último número pode ser de 0 a 255, ignorando seu valor de 34). Funciona se você usar uma máscara válida para o IP, como192.168.0.34/255.255.255.252
?Você apenas usaria '%' como seu caractere curinga, como este:
GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
fonte
mysql> GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
O caractere curinga é um "%" em vez de um "*"
fonte
Apenas uma observação sobre uma peculiaridade que enfrentei:
considere:
Se você tiver um usuário definido em mysql.user
'user'@'192.168.0.102'
com password1 e outro'user'@'192.168.0.%'
com password2,então,
se você tentar se conectar ao servidor db do servidor web como 'usuário' com senha 2,
isso resultará em um erro de 'Acesso negado' porque a
'user'@'192.168.0.102'
autenticação de IP único é usada sobre a'user'@'192.168.0.%'
autenticação de curinga .fonte
depois de conectar o servidor e quiser se conectar ao seu host, você deve seguir as etapas abaixo:
GRANT ALL ON . to root@'write_your_ip_addres' IDENTIFIED BY 'write_password_to_connect'
nano /etc/mysql/my.cnf
service mysql restart
fonte
Motivado pela resposta de @Malvineaus, tentei eu mesmo e percebi que não funcionou comigo.
Você pode especificar máscaras de sub-rede com '192.168.1.%' Ou '192.168.1.0/255.255.255.0', mas a sub-rede deve estar sempre em octetos completos. consulte https://mariadb.com/kb/en/create-user/#host-name-component . Como resultado, a funcionalidade entre uma forma de especificação e outra é a mesma.
Por exemplo, '192.168.1.0/255.255.255.128' não funcionará, pois não está em um limite de octeto completo.
fonte