Mogę łatwo przyznać dostęp do jednego adresu IP za pomocą tego kodu:
$ 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;
Ale muszę zezwolić całej podsieci 192.168.1. * Na zdalny dostęp do bazy danych.
Jak mogę to zrobić?
To wygląda można również użyć maski sieci , np
GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...
źródło
192.160.0.34/255.255.255.0
to to samo,192.168.0.34/24
co nie ma sensu (/24
oznacza, że ostatnia liczba może wynosić od 0 do 255, ignorując twoją wartość 34). Czy to działa, jeśli używasz prawidłowej maski adresu IP, na przykład192.168.0.34/255.255.255.252
?Możesz użyć „%” jako symbolu wieloznacznego w następujący sposób:
GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
źródło
mysql> GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
Znak wieloznaczny to „%” zamiast „*”
źródło
Tylko uwaga o osobliwości, z którą się spotkałem:
Rozważ:
Jeśli masz użytkownika zdefiniowanego w mysql.user jako hasło1
'user'@'192.168.0.102'
i innego'user'@'192.168.0.%'
z hasłem2,następnie,
jeśli próbujesz połączyć się z serwerem db z serwera WWW jako „użytkownik” z hasłem2,
spowoduje to błąd „Odmowa dostępu”, ponieważ
'user'@'192.168.0.102'
uwierzytelnianie pojedynczego adresu IP jest używane zamiast'user'@'192.168.0.%'
uwierzytelniania za pomocą symboli wieloznacznych .źródło
po podłączeniu serwera i chcesz się połączyć na swoim hoście, wykonaj poniższe czynności:
GRANT ALL ON . to root@'write_your_ip_addres' IDENTIFIED BY 'write_password_to_connect'
nano /etc/mysql/my.cnf
service mysql restart
źródło
Zmotywowany odpowiedzią @Malvineaus, wypróbowałem to samodzielnie i zauważyłem, że nie działa na mnie.
Możesz określić maski podsieci za pomocą „192.168.1.%” Lub „192.168.1.0/255.255.255.0”, ale podsieć musi zawsze obejmować pełne oktety. zobacz https://mariadb.com/kb/en/create-user/#host-name-component . W rezultacie funkcjonalność między jednym a drugim sposobem specyfikacji jest taka sama.
Na przykład „192.168.1.0/255.255.255.128” nie będzie działać, ponieważ nie znajduje się na pełnej granicy oktetu.
źródło