{"id":275,"date":"2026-10-17T10:10:45","date_gmt":"2026-10-17T08:10:45","guid":{"rendered":"https:\/\/www.cisilino.com\/?p=275"},"modified":"2026-10-29T20:02:10","modified_gmt":"2026-10-29T19:02:10","slug":"mysql-5-7-docker-nftables-schutz","status":"publish","type":"post","link":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/","title":{"rendered":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Vorbemerkung: warum MySQL 5.7 in Docker<\/h2>\n<p>Wir brauchten <strong>MySQL 5.7 in Docker<\/strong> auf einem Server, der sonst mit einer aktuellen Distribution l\u00e4uft. Einige Altanwendungen sind nicht mit MySQL 8 kompatibel (ge\u00e4nderte Standard-Authentifizierung, strengere SQL-Modi, neue reservierte W\u00f6rter), und sie kurzfristig zu migrieren kam nicht in Frage.<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/mysql-5-7-docker-nftables-absichern.webp\" alt=\"MySQL 5.7 in Docker: eine Datenbank in einem Kasten mit orangefarbenem gestricheltem Rand, davor ein Kreis und ein Balken\" width=\"1200\" height=\"630\"\/><\/figure>\n<p>Eine so alte Version direkt auf dem Host zu installieren, bringt mehrere Probleme. Die offiziellen Repositories aktueller Distributionen bieten sie nicht mehr an. Pakete von Drittanbietern k\u00f6nnen mit dem Rest des Systems in Konflikt geraten, und ein OS-Update k\u00f6nnte sie zerst\u00f6ren.<\/p>\n<p>Wir haben uns deshalb entschieden, sie <strong>in einem Docker-Container zu isolieren<\/strong>. Der Host bleibt sauber und aktuell, die Datenbankversion ist festgelegt und reproduzierbar. Daten und Konfiguration liegen in einem Ordner, der sich leicht sichern und verschieben l\u00e4sst.<\/p>\n<p>Dieser Artikel erz\u00e4hlt, wie wir sie eingerichtet haben und vor allem, auf welche Hindernisse wir unterwegs gesto\u00dfen sind. Es sind die unbeabsichtigte Freigabe des Ports 3306 und ein iptables-Fehler beim Neustart. Dazu kam das Schreiben einer Firewall mit <strong>nftables<\/strong>, die nur autorisierte IPs durchl\u00e4sst.<\/p>\n<blockquote class=\"wp-block-quote\">\n<p><strong>Hinweis:<\/strong> MySQL 5.7 hat im Oktober 2023 das Ende des Supports (EOL) erreicht und erh\u00e4lt keine Sicherheitspatches mehr. Es ist eine \u00dcbergangsl\u00f6sung: Das Ziel bleibt die Migration auf MySQL 8.x oder MariaDB. Gerade deshalb ist es umso wichtiger, es nicht offen zu lassen.<\/p>\n<\/blockquote>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<h2 class=\"wp-block-heading\">1. Ordnerstruktur<\/h2>\n<pre class=\"wp-block-code\"><code>\/opt\/mysql57\/\n\u251c\u2500\u2500 docker-compose.yml\n\u251c\u2500\u2500 .env\n\u251c\u2500\u2500 conf.d\/        # configurazioni personalizzate (my.cnf aggiuntivi)\n\u251c\u2500\u2500 data\/          # dati del database (volume persistente)\n\u2514\u2500\u2500 logs\/\n<\/code><\/pre>\n<p>Die Datei <code>.env<\/code> enth\u00e4lt die Zugangsdaten, damit sie nicht im Compose landen.<\/p>\n<pre class=\"wp-block-code\"><code>TZ=Europe\/Rome\nMYSQL_ROOT_PASSWORD=una_password_molto_lunga_e_casuale\nMYSQL_DATABASE=nome_db\nMYSQL_USER=nome_utente\nMYSQL_PASSWORD=altra_password_robusta\n<\/code><\/pre>\n<p>Sch\u00fctzen Sie sie mit <code>chmod 600 .env<\/code>.<\/p>\n<h2 class=\"wp-block-heading\">2. Die docker-compose.yml<\/h2>\n<pre class=\"wp-block-code\"><code>services:\n  mysql57:\n    image: mysql:5.7\n    container_name: mysql57\n    restart: unless-stopped\n    env_file:\n      - .env\n    ports:\n      - \"3306:3306\"\n    environment:\n      TZ: \"${TZ:-Europe\/Rome}\"\n      MYSQL_ROOT_PASSWORD: \"${MYSQL_ROOT_PASSWORD}\"\n      MYSQL_DATABASE: \"${MYSQL_DATABASE}\"\n      MYSQL_USER: \"${MYSQL_USER}\"\n      MYSQL_PASSWORD: \"${MYSQL_PASSWORD}\"\n    command:\n      - --default-authentication-plugin=mysql_native_password\n    volumes:\n      - .\/data:\/var\/lib\/mysql\n      - .\/conf.d:\/etc\/mysql\/conf.d:ro\n      - .\/logs:\/var\/log\/mysql\n    healthcheck:\n      test: &#91;\"CMD-SHELL\", \"mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent\"]\n      interval: 20s\n      timeout: 5s\n      retries: 10\n      start_period: 45s\n    ulimits:\n      nofile:\n        soft: 65535\n        hard: 65535\n<\/code><\/pre>\n<p>Einige Entscheidungen, die man beachten sollte.<\/p>\n<ul class=\"wp-block-list\">\n<li><strong><code>restart: unless-stopped<\/code><\/strong>: Die Datenbank startet nach einem Neustart des Servers von selbst wieder.<\/li>\n<li><strong>Volumes als Bind-Mount<\/strong>: Daten, Konfiguration und Logs liegen auf dem Host, Backups und Migrationen sind also einfache Ordnerkopien.<\/li>\n<li><strong>Healthcheck<\/strong>: erlaubt anderen Diensten zu warten, bis MySQL wirklich bereit ist (<code>$$<\/code> sorgt daf\u00fcr, dass die Variable im Container und nicht von Compose aufgel\u00f6st wird).<\/li>\n<li><strong><code>ulimits nofile<\/code><\/strong>: vermeidet den Fehler \u201etoo many open files\u201c unter Last.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\">3. Erstes Problem: Der Port von MySQL 5.7 in Docker ist f\u00fcr die ganze Welt offen<\/h2>\n<p>Die Zeile <code>- \"3306:3306\"<\/code> entspricht <code>0.0.0.0:3306:3306<\/code>: Docker ver\u00f6ffentlicht den Port auf <strong>allen Schnittstellen<\/strong> des Hosts, auch der \u00f6ffentlichen.<\/p>\n<p>Das Heimt\u00fcckischste ist, dass Docker seine eigenen Regeln direkt in die Firewall des Kernels schreibt und diese vor denen von UFW oder firewalld ausgewertet werden. Eine aktive Firewall <strong>gen\u00fcgt nicht<\/strong>: Der Port bleibt erreichbar. Die Docker-Dokumentation beschreibt dieses Verhalten unter <a href=\"https:\/\/docs.docker.com\/engine\/network\/packet-filtering-firewalls\/\" target=\"_blank\" rel=\"noopener\">Packet filtering and firewalls<\/a>.<\/p>\n<p>Die m\u00f6glichen Wege sind.<\/p>\n<ol class=\"wp-block-list\">\n<li><strong>Nur localhost<\/strong>: <code>\"127.0.0.1:3306:3306\"<\/code>, wenn die Datenbank nur vom Host oder \u00fcber einen SSH-Tunnel genutzt wird.<\/li>\n<li><strong>Kein ver\u00f6ffentlichter Port<\/strong>: Sind die Clients andere Container, gen\u00fcgt ein gemeinsames Docker-Netzwerk.<\/li>\n<li><strong>Bestimmte IP<\/strong>: nur auf einer Adresse eines privaten Netzes\/VPN ver\u00f6ffentlichen.<\/li>\n<li><strong>\u00d6ffentlicher Port mit IP-Filter<\/strong>: unser Fall, weil sich ein externer Client (eine phpMyAdmin-Instanz auf einem anderen Server) verbinden k\u00f6nnen muss.<\/li>\n<\/ol>\n<p>F\u00fcr Fall 4 braucht man eine Firewall, die den Verkehr der von Docker ver\u00f6ffentlichten Ports korrekt filtert.<\/p>\n<h2 class=\"wp-block-heading\">4. Zweites Problem: iptables-Fehler beim Start<\/h2>\n<p>Nachdem wir die Firewall angefasst hatten, lieferte <code>docker compose up<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>failed to create network mysql57_default: Error response from daemon:\nFailed to Setup IP tables: Unable to enable ACCEPT OUTGOING rule:\n(iptables failed: iptables --wait -t filter -A DOCKER-FORWARD -i br-... -j ACCEPT:\niptables: No chain\/target\/match by that name.\n<\/code><\/pre>\n<p>Der Fehler h\u00e4ngt nicht vom Compose ab: Die Kette <code>DOCKER-FORWARD<\/code> (in neueren Docker-Versionen eingef\u00fchrt) existierte nicht mehr. Sie war von etwas gel\u00f6scht worden, das die Regeln <strong>nach<\/strong> dem Start des Daemons bereinigt hatte. Ein Neustart von Docker (<code>systemctl restart docker<\/code>) legt sie neu an, doch das Problem kehrt zur\u00fcck, bis der wahre Schuldige beseitigt ist.<\/p>\n<h3 class=\"wp-block-heading\">Der Schuldige: <code>flush ruleset<\/code><\/h3>\n<p>Unsere <code>\/etc\/nftables.conf<\/code> begann mit.<\/p>\n<pre class=\"wp-block-code\"><code>flush ruleset\n<\/code><\/pre>\n<p>Dieser Befehl l\u00f6scht <strong>alle<\/strong> nftables-Tabellen, auch die von Docker angelegten. Au\u00dferdem enthielt die Datei eine statische Kopie der Docker-Regeln, mit von Hand eingetragenem Bridge-Namen (<code>br-278550235c3f<\/code>) und Container-IP (<code>172.18.0.2<\/code>). Der Bridge-Name \u00e4ndert sich jedoch jedes Mal, wenn das Compose-Netzwerk neu erstellt wird. Die Kopie war also sofort veraltet, und die Tabelle <code>ip nat<\/code> geriet in Konflikt mit der von Docker verwalteten.<\/p>\n<p><strong>Goldene Regel:<\/strong> Mit Docker verwendet man in der nftables-Datei kein <code>flush ruleset<\/code> und kopiert keine seiner Regeln. Man verwaltet nur seine eigene Firewall, in eigenen Tabellen.<\/p>\n<h2 class=\"wp-block-heading\">5. Die Firewall mit nftables f\u00fcr MySQL 5.7 in Docker<\/h2>\n<p>Das Prinzip: Die von Docker ver\u00f6ffentlichten Ports werden mit DNAT umgeschrieben und dann vom Host an den Container weitergeleitet, durchlaufen also die Kette <strong><code>forward<\/code><\/strong>, nicht <code>input<\/code>. Eine Regel <code>drop<\/code> in einer eigenen Kette <code>forward<\/code> mit etwas niedrigerer Priorit\u00e4t (also zuerst ausgewertet) verwirft das Paket unabh\u00e4ngig von den <code>accept<\/code>-Regeln von Docker.<\/p>\n<p>Um fremde Tabellen nicht anzufassen, verwenden wir das Muster <code>table ...<\/code> + <code>delete table ...<\/code>: Es macht die Datei ohne Fehler und ohne <code>flush<\/code> wiederholt ausf\u00fchrbar.<\/p>\n<p><code>\/etc\/nftables.conf<\/code>.<\/p>\n<pre class=\"wp-block-code\"><code>#!\/usr\/sbin\/nft -f\n\n# NIENTE \"flush ruleset\": cancellerebbe anche le tabelle di Docker\n\n# ---------------- firewall host ----------------\ntable inet filter\ndelete table inet filter\n\ntable inet filter {\n\n    chain input {\n        type filter hook input priority filter; policy drop;\n        ct state established,related accept\n        iifname \"lo\" accept\n        ip6 nexthdr icmpv6 accept\n        iifname \"enp7s0\" accept                       # rete privata\n        ip saddr 203.0.113.20 tcp dport 22 accept     # SSH da host fidato\n        ip saddr 203.0.113.30 tcp dport 22 accept     # SSH da VPN\n        ip saddr 203.0.113.20 icmp type echo-request accept\n        tcp dport { 80, 443 } accept\n    }\n\n    chain output {\n        type filter hook output priority filter; policy accept;\n    }\n}\n\n# ---------------- guardia MySQL (porta pubblicata da Docker) ----------------\ntable ip mysql_guard\ndelete table ip mysql_guard\n\ntable ip mysql_guard {\n    set allowed {\n        type ipv4_addr\n        flags interval\n        elements = {\n            203.0.113.10        # phpMyAdmin\n        }\n    }\n\n    chain forward {\n        type filter hook forward priority filter - 5; policy accept;\n        iifname \"enp7s0\" accept\n        ct status dnat tcp dport 3306 ip saddr @allowed accept\n        ct status dnat tcp dport 3306 counter drop\n    }\n}\n<\/code><\/pre>\n<p>Wie die Schutzregel funktioniert.<\/p>\n<ul class=\"wp-block-list\">\n<li><code>ct status dnat<\/code> w\u00e4hlt nur Pakete aus, die durch DNAT gelaufen sind, also die f\u00fcr die von Docker ver\u00f6ffentlichten Ports bestimmten.<\/li>\n<li>Die erste Regel akzeptiert, wer im Set <code>allowed<\/code> ist; die zweite verwirft alle anderen und z\u00e4hlt sie (<code>counter<\/code>).<\/li>\n<li>Lokaler Verkehr (<code>127.0.0.1<\/code>) und Verkehr zwischen Containern im selben Netzwerk l\u00e4uft nicht \u00fcber das Forward des Routers und wird daher nicht ber\u00fchrt.<\/li>\n<\/ul>\n<blockquote class=\"wp-block-quote\">\n<p><strong>Kompatibilit\u00e4t:<\/strong> In einer ersten Version verwendeten wir <code>ct original proto-dst 3306<\/code>, aber einige Versionen von <code>nft<\/code> antworten mit <em>\u201eCan&#8217;t parse symbolic invalid expressions\u201c<\/em>. Im Hook <code>forward<\/code> ist das DNAT bereits erfolgt und der Container-Port entspricht dem ver\u00f6ffentlichten (<code>3306:3306<\/code>). Daher ist <code>tcp dport 3306<\/code> zusammen mit <code>ct status dnat<\/code> gleichwertig und funktioniert \u00fcberall. \u00c4ndern Sie das Mapping (z. B. <code>3307:3306<\/code>), muss die Regel an den internen Port angepasst werden.<\/p>\n<\/blockquote>\n<h3 class=\"wp-block-heading\">\u00c4nderungen anwenden, ohne sich auszusperren<\/h3>\n<p>Halten Sie eine zweite SSH-Sitzung als Reserve offen, dann.<\/p>\n<pre class=\"wp-block-code\"><code>nft -c -f \/etc\/nftables.conf     # solo verifica della sintassi\nnft delete table ip nat          # una tantum: elimina la vecchia copia statica\nnft -f \/etc\/nftables.conf\nsystemctl restart docker         # Docker ricrea le sue tabelle pulite\ncd \/opt\/mysql57 &amp;&amp; docker compose up -d\n<\/code><\/pre>\n<p>Damit es beim Booten geladen wird, stellen Sie sicher, dass der Dienst aktiv ist (<code>systemctl enable --now nftables<\/code>) und dass <code>\/etc\/nftables.conf<\/code> kein <code>flush ruleset<\/code> enth\u00e4lt.<\/p>\n<h3 class=\"wp-block-heading\">IPs zur Laufzeit verwalten<\/h3>\n<pre class=\"wp-block-code\"><code>nft add element ip mysql_guard allowed { 203.0.113.50 }\nnft delete element ip mysql_guard allowed { 203.0.113.50 }\n<\/code><\/pre>\n<p>Um es dauerhaft zu machen, aktualisieren Sie auch das Set in der Datei.<\/p>\n<h2 class=\"wp-block-heading\">6. \u00dcberpr\u00fcfung<\/h2>\n<p>Vom autorisierten Server.<\/p>\n<pre class=\"wp-block-code\"><code>nc -zv IP_PUBBLICO_DB 3306        # deve rispondere \"succeeded\"\n<\/code><\/pre>\n<p>Von jeder anderen IP.<\/p>\n<pre class=\"wp-block-code\"><code>nmap -Pn -p 3306 IP_PUBBLICO_DB   # deve risultare \"filtered\" \/ timeout\n<\/code><\/pre>\n<p>Auf dem Server muss der Z\u00e4hler der Drop-Regel bei jedem nicht autorisierten Versuch wachsen.<\/p>\n<pre class=\"wp-block-code\"><code>nft list chain ip mysql_guard forward\nss -tlnp | grep 3306\n<\/code><\/pre>\n<h2 class=\"wp-block-heading\">7. Zweite Barriere: die MySQL-Benutzer<\/h2>\n<p>Die Firewall ersetzt nicht die Berechtigungen der Datenbank. Legen Sie den Benutzer mit auf die IP des Clients beschr\u00e4nktem Host an.<\/p>\n<pre class=\"wp-block-code\"><code>CREATE USER 'pma_user'@'203.0.113.10' IDENTIFIED BY 'password_robusta';\nGRANT ALL ON nome_db.* TO 'pma_user'@'203.0.113.10';\nFLUSH PRIVILEGES;\n<\/code><\/pre>\n<p>Gelingt die TCP-Verbindung, MySQL antwortet aber <code>Access denied<\/code>, liegt das Problem hier und nicht in der Firewall.<\/p>\n<h2 class=\"wp-block-heading\">8. Was man sich zu MySQL 5.7 in Docker merken sollte<\/h2>\n<ul class=\"wp-block-list\">\n<li><strong>Docker und die Host-Firewall ignorieren sich nicht<\/strong>: Zu verstehen, welche Kette der Verkehr durchl\u00e4uft (<code>input<\/code> oder <code>forward<\/code>), ist der Schl\u00fcssel zu allem.<\/li>\n<li><strong>Niemals <code>flush ruleset<\/code><\/strong> auf einem Host mit Docker; verwenden Sie eigene Tabellen.<\/li>\n<li><strong>Kopieren Sie keine von Docker erzeugten Regeln<\/strong> in Ihre Dateien: Bridge-Namen und IPs \u00e4ndern sich.<\/li>\n<li>Haben Sie den Port schon freigegeben, pr\u00fcfen Sie die Logs in <code>.\/logs<\/code> und erw\u00e4gen Sie, die <strong>Passw\u00f6rter zu \u00e4ndern<\/strong>, vor allem das von root.<\/li>\n<li>Wo m\u00f6glich, ziehen Sie ein <strong>VPN (WireGuard) oder einen SSH-Tunnel<\/strong> der \u00f6ffentlichen Freigabe einer Datenbank vor.<\/li>\n<li>Planen Sie die <strong>Migration<\/strong> von MySQL 5.7 auf eine unterst\u00fctzte Version.<\/li>\n<\/ul>\n<p>Haben Sie Fragen oder eine andere L\u00f6sung f\u00fcr dasselbe Problem? Schreiben Sie es in die Kommentare. Zum Thema MySQL und Debian lesen Sie auch: <a href=\"https:\/\/www.cisilino.com\/de\/2026\/10\/13\/mysql-startet-nicht-debian-12\/\">MySQL startet nach dem Debian-12-Upgrade nicht mehr<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.<\/p>\n","protected":false},"author":1,"featured_media":759,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wpai_generated_summary":"","footnotes":""},"categories":[363],"tags":[310,330,294,314],"class_list":["post-275","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server-datenbanken","tag-docker-de","tag-firewall-de","tag-mysql-de","tag-nftables-de"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"matteocisilino\"\/>\n\t<meta name=\"google-site-verification\" content=\"_A-1f0dO30IDVHfP9muflI8kHQs-H4YOi8WLUkYzuLE\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Matteo Cisilino - Guide su WordPress, server e sicurezza\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables\" \/>\n\t\t<meta property=\"og:description\" content=\"So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/mysql-5-7-docker-nftables-absichern.webp\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/mysql-5-7-docker-nftables-absichern.webp\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-17T08:10:45+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-29T19:02:10+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables\" \/>\n\t\t<meta name=\"twitter:description\" content=\"So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/mysql-5-7-docker-nftables-absichern.webp\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#blogposting\",\"name\":\"MySQL 5.7 in Docker, gesch\\u00fctzt mit nftables\",\"headline\":\"MySQL 5.7 in Docker, gesch\\u00fctzt mit nftables\",\"author\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/author\\\/matteocisilino\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.cisilino.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/mysql-5-7-docker-nftables-absichern.webp\",\"width\":1200,\"height\":630,\"caption\":\"MySQL 5.7 in Docker: eine Datenbank in einem Kasten mit orangefarbenem gestricheltem Rand, davor ein Kreis und ein Balken\"},\"datePublished\":\"2026-10-17T10:10:45+02:00\",\"dateModified\":\"2026-10-29T20:02:10+01:00\",\"inLanguage\":\"de-DE\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#webpage\"},\"articleSection\":\"Server und Datenbanken, Docker, Firewall, MySQL, nftables\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/category\\\/server-datenbanken\\\/#listItem\",\"name\":\"Server und Datenbanken\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/category\\\/server-datenbanken\\\/#listItem\",\"position\":2,\"name\":\"Server und Datenbanken\",\"item\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/category\\\/server-datenbanken\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#listItem\",\"name\":\"MySQL 5.7 in Docker, gesch\\u00fctzt mit nftables\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#listItem\",\"position\":3,\"name\":\"MySQL 5.7 in Docker, gesch\\u00fctzt mit nftables\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/category\\\/server-datenbanken\\\/#listItem\",\"name\":\"Server und Datenbanken\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/#organization\",\"name\":\"Matteo Cisilino\",\"description\":\"Guide su WordPress, server e sicurezza\",\"url\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.cisilino.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/logo-cisilino-512.png\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#organizationLogo\",\"width\":512,\"height\":512,\"caption\":\"Logo: un cerchio a sinistra che si divide in cerchi pi\\u00f9 piccoli\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/author\\\/matteocisilino\\\/#author\",\"url\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/author\\\/matteocisilino\\\/\",\"name\":\"matteocisilino\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/639872265f0661e8aee8924ba9d756b00ea816f8286fab99a5116c729d49618f?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"matteocisilino\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#webpage\",\"url\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/\",\"name\":\"MySQL 5.7 in Docker, gesch\\u00fctzt mit nftables\",\"description\":\"So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/author\\\/matteocisilino\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/author\\\/matteocisilino\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.cisilino.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/mysql-5-7-docker-nftables-absichern.webp\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#mainImage\",\"width\":1200,\"height\":630,\"caption\":\"MySQL 5.7 in Docker: eine Datenbank in einem Kasten mit orangefarbenem gestricheltem Rand, davor ein Kreis und ein Balken\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/2026\\\/10\\\/17\\\/mysql-5-7-docker-nftables-schutz\\\/#mainImage\"},\"datePublished\":\"2026-10-17T10:10:45+02:00\",\"dateModified\":\"2026-10-29T20:02:10+01:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/\",\"name\":\"Matteo Cisilino\",\"description\":\"Guide su WordPress, server e sicurezza\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.cisilino.com\\\/de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables","description":"So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.","canonical_url":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"_A-1f0dO30IDVHfP9muflI8kHQs-H4YOi8WLUkYzuLE","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#blogposting","name":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables","headline":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables","author":{"@id":"https:\/\/www.cisilino.com\/de\/author\/matteocisilino\/#author"},"publisher":{"@id":"https:\/\/www.cisilino.com\/de\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/mysql-5-7-docker-nftables-absichern.webp","width":1200,"height":630,"caption":"MySQL 5.7 in Docker: eine Datenbank in einem Kasten mit orangefarbenem gestricheltem Rand, davor ein Kreis und ein Balken"},"datePublished":"2026-10-17T10:10:45+02:00","dateModified":"2026-10-29T20:02:10+01:00","inLanguage":"de-DE","mainEntityOfPage":{"@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#webpage"},"isPartOf":{"@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#webpage"},"articleSection":"Server und Datenbanken, Docker, Firewall, MySQL, nftables"},{"@type":"BreadcrumbList","@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.cisilino.com\/de\/#listItem","position":1,"name":"Home","item":"https:\/\/www.cisilino.com\/de\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.cisilino.com\/de\/category\/server-datenbanken\/#listItem","name":"Server und Datenbanken"}},{"@type":"ListItem","@id":"https:\/\/www.cisilino.com\/de\/category\/server-datenbanken\/#listItem","position":2,"name":"Server und Datenbanken","item":"https:\/\/www.cisilino.com\/de\/category\/server-datenbanken\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#listItem","name":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.cisilino.com\/de\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#listItem","position":3,"name":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables","previousItem":{"@type":"ListItem","@id":"https:\/\/www.cisilino.com\/de\/category\/server-datenbanken\/#listItem","name":"Server und Datenbanken"}}]},{"@type":"Organization","@id":"https:\/\/www.cisilino.com\/de\/#organization","name":"Matteo Cisilino","description":"Guide su WordPress, server e sicurezza","url":"https:\/\/www.cisilino.com\/de\/","logo":{"@type":"ImageObject","url":"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/logo-cisilino-512.png","@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#organizationLogo","width":512,"height":512,"caption":"Logo: un cerchio a sinistra che si divide in cerchi pi\u00f9 piccoli"},"image":{"@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/www.cisilino.com\/de\/author\/matteocisilino\/#author","url":"https:\/\/www.cisilino.com\/de\/author\/matteocisilino\/","name":"matteocisilino","image":{"@type":"ImageObject","@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/639872265f0661e8aee8924ba9d756b00ea816f8286fab99a5116c729d49618f?s=96&d=mm&r=g","width":96,"height":96,"caption":"matteocisilino"}},{"@type":"WebPage","@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#webpage","url":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/","name":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables","description":"So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/www.cisilino.com\/de\/#website"},"breadcrumb":{"@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#breadcrumblist"},"author":{"@id":"https:\/\/www.cisilino.com\/de\/author\/matteocisilino\/#author"},"creator":{"@id":"https:\/\/www.cisilino.com\/de\/author\/matteocisilino\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/mysql-5-7-docker-nftables-absichern.webp","@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#mainImage","width":1200,"height":630,"caption":"MySQL 5.7 in Docker: eine Datenbank in einem Kasten mit orangefarbenem gestricheltem Rand, davor ein Kreis und ein Balken"},"primaryImageOfPage":{"@id":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/#mainImage"},"datePublished":"2026-10-17T10:10:45+02:00","dateModified":"2026-10-29T20:02:10+01:00"},{"@type":"WebSite","@id":"https:\/\/www.cisilino.com\/de\/#website","url":"https:\/\/www.cisilino.com\/de\/","name":"Matteo Cisilino","description":"Guide su WordPress, server e sicurezza","inLanguage":"de-DE","publisher":{"@id":"https:\/\/www.cisilino.com\/de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Matteo Cisilino - Guide su WordPress, server e sicurezza","og:type":"article","og:title":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables","og:description":"So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.","og:url":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/","og:image":"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/mysql-5-7-docker-nftables-absichern.webp","og:image:secure_url":"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/mysql-5-7-docker-nftables-absichern.webp","og:image:width":1200,"og:image:height":630,"article:published_time":"2026-10-17T08:10:45+00:00","article:modified_time":"2026-10-29T19:02:10+00:00","twitter:card":"summary_large_image","twitter:title":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables","twitter:description":"So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.","twitter:image":"https:\/\/www.cisilino.com\/wp-content\/uploads\/2026\/10\/mysql-5-7-docker-nftables-absichern.webp"},"aioseo_meta_data":{"post_id":"275","title":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables","description":"So betreiben Sie MySQL 5.7 in Docker auf einem modernen Server, ohne es dem Internet auszusetzen: docker-compose, geschlossener Port und nftables-Firewall.","keywords":null,"keyphrases":{"focus":{"keyphrase":"mysql 5.7 in docker"}},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-10-29 09:24:25","updated":"2026-10-29 21:59:55","focus_keyword":"mysql 5.7 docker","additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.cisilino.com\/de\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.cisilino.com\/de\/category\/server-datenbanken\/\" title=\"Server und Datenbanken\">Server und Datenbanken<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tMySQL 5.7 in Docker, gesch\u00fctzt mit nftables\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.cisilino.com\/de\/"},{"label":"Server und Datenbanken","link":"https:\/\/www.cisilino.com\/de\/category\/server-datenbanken\/"},{"label":"MySQL 5.7 in Docker, gesch\u00fctzt mit nftables","link":"https:\/\/www.cisilino.com\/de\/2026\/10\/17\/mysql-5-7-docker-nftables-schutz\/"}],"_links":{"self":[{"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/posts\/275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/comments?post=275"}],"version-history":[{"count":2,"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/posts\/275\/revisions"}],"predecessor-version":[{"id":933,"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/posts\/275\/revisions\/933"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/media\/759"}],"wp:attachment":[{"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/media?parent=275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/categories?post=275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cisilino.com\/de\/wp-json\/wp\/v2\/tags?post=275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}