Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sprawdź, czy adres IP jest w podsieci

Jasne, to wykonalne. Pomysł polega na tym, że obliczamy maskę podsieci, ustawiając najbardziej znaczące bity na 1, tyle, ile podyktuje klasa podsieci. Dla klasy C byłoby to

SELECT -1 << 8;

Następnie ORAZ maska ​​podsieci z adresem IP, który posiadasz; jeśli adres IP znajduje się w podsieci, wynik powinien być równy adresowi podsieci – standardowe elementy sieciowe. W efekcie otrzymujemy:

SELECT (-1 << 8) & INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");

Aktualizacja: Tak, konieczna jest znajomość klasy sieci lub maska ​​podsieci (która jest równoważną informacją). Zastanów się, jak poradzić sobie z przypadkiem, w którym podsieć to X.Y.0.0 jeśli nie masz tych informacji. Czy to jest X.Y.0.0/16? lub X.Y.0.0/8 gdzie trzeci oktet po prostu się dzieje być 0? Nie ma sposobu, aby się dowiedzieć.

Jeśli znasz maskę podsieci, zapytanie można zapisać jako

SELECT (-1 << (33 - INSTR(BIN(INET_ATON("255.255.255.0")), "0"))) &
       INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połącz się z MySQL za pomocą tunelowania SSH w node-mysql

  2. Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo '/var/mysql/mysql.sock' (38)

  3. C# połącz się z mysql przez kontrolę użytkownika

  4. Jak wykonać kopię zapasową i przywrócić bazę danych MySQL?

  5. Jak Kupony WooCommerce są przechowywane w bazie danych?