in MySQL

IP Addressen in MySQL speichern

closeDiese Nachricht wurde vor 13 jahr 6 tag veröffentlicht. Unter Umständen ist der Inhalt nicht mehr auf dem aktuellsten Stand.

IP Adressen speichern ist ein heikles Thema – nicht nur in Hinsicht auf die Datenschutzbestimmungen. Kann man nun auf die Speicherung (aus welchen Gründen auch immer) nicht verzichten, so ist es aus verschiedenen Gründen z.B. Speicherbelegung, Performance, … besser die IP als INTEGER und nicht im „Klartext“ als VARCHAR abzuspeichern.

MySQL bietet von Haus die Funktion INET_ATON() und INET_NTOA() um IP Adressen umzuwandeln.

Mit INET_ATON() kann eine IP kann nun wie folgt umgewandelt werden:

mysql> SELECT INET_ATON('192.168.192.0') AS IP;
+------------+
| IP         |
+------------+
| 3232284672 |
+------------+
1 row in set (0.00 sec)

Und anders herum verwendet man INET_NTOA():

mysql> SELECT INET_NTOA('3232284672') AS IP;
+---------------+
| IP            |
+---------------+
| 192.168.192.0 |
+---------------+
1 row in set (0.00 sec)

Hinweis: Beim Umwandeln kann eine Zahl entstehen, die die maximale Größe des INT Datentyps (max. Wert 2147483648) überschreitet. Das Feld zum Speichern des INTEGERS muss UNSIGNED (also nicht vorzeichenbehaftet) sein (max. Wert 4294967295).

Leider scheint diese Methode noch nicht kompatibel zu IPv6. Aber bis zur endgültigen Einführung wird es bestimmt auch hierfür eine Lösung geben.

Weitere Informationen zum Thema:
http://dev.mysql.com/doc/refman/5.1/de/miscellaneous-functions.html
http://dev.mysql.com/doc/refman/5.1/de/numeric-types.html

Schreibe einen Kommentar

Kommentar

 

  • Anderer Inhalt mit diesem Tag