Mit diesem Code kann ich problemlos Zugriff auf eine IP gewähren:
$ 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;
Aber ich muss dem gesamten Subnetz 192.168.1. * Erlauben, remote auf die Datenbank zuzugreifen.
Wie kann ich das machen?
Es sieht so aus, als könnten Sie auch eine Netzmaske verwenden , z
quelle
192.160.0.34/255.255.255.0
ist das gleiche,192.168.0.34/24
was nicht wirklich Sinn macht (/24
bedeutet, dass die letzte Zahl zwischen 0 und 255 liegen kann, wobei Ihr Wert von 34 ignoriert wird). Funktioniert es, wenn Sie eine gültige Maske für die IP verwenden, wie192.168.0.34/255.255.255.252
?Sie würden einfach '%' wie folgt als Platzhalter verwenden:
quelle
Das Platzhalterzeichen ist ein "%" anstelle eines "*"
quelle
Nur eine Anmerkung zu einer Besonderheit, mit der ich konfrontiert war:
Betrachten Sie:
Wenn Sie in mysql.user einen Benutzer wie
'user'@'192.168.0.102'
mit password1 und einen anderen'user'@'192.168.0.%'
mit password2 definiert haben,dann,
Wenn Sie versuchen, vom Webserver aus als 'Benutzer' mit Kennwort2 eine Verbindung zum DB-Server herzustellen,
Dies führt zu einem Fehler "Zugriff verweigert", da die Einzel-IP-
'user'@'192.168.0.102'
Authentifizierung über die Platzhalterauthentifizierung verwendet wird'user'@'192.168.0.%'
.quelle
Nachdem Sie eine Verbindung zum Server hergestellt haben und eine Verbindung zu Ihrem Host herstellen möchten, sollten Sie die folgenden Schritte ausführen:
GRANT ALL ON . to root@'write_your_ip_addres' IDENTIFIED BY 'write_password_to_connect'
nano /etc/mysql/my.cnf
service mysql restart
quelle