sql >> Databasteknik >  >> RDS >> Mysql

Hur man begränsar MySQL-portåtkomst

På vissa Linux-distributioner är port 3306 öppen efter att du har installerat MySQL. Den här artikeln beskriver två metoder för att begränsa eller blockera åtkomst till port 3306 på en ohanterad server.

Informationen i den här artikeln gäller endast ohanterade produkter. Du måste ha root-åtkomst till servern för att följa procedurerna som beskrivs nedan.

Metod #1:Inaktivera MySQL-nätverk

Om du inte behöver komma åt MySQL från en extern dator kan du inaktivera MySQL-nätverk.

Följ lämplig procedur nedan för din Linux-distribution.

Även med MySQL-nätverk inaktiverat kan du fortfarande komma åt MySQL säkert från en fjärrdator om du behöver. För att göra detta kan du konfigurera en SSH-tunnel. Mer information om hur du gör detta finns i den här artikeln.
CentOS och Fedora

För att inaktivera MySQL-nätverk på CentOS och Fedora, följ dessa steg:

  1. Logga in på din server med SSH.
  2. Vid kommandotolken, använd din föredragna textredigerare för att öppna /etc/my.cnf fil.
  3. Leta upp följande rad i my.cnf fil:
    #skip-networking
    Om den här raden inte finns i my.cnf fil, lägg till den.
  4. Ta bort # tecken i början av raden så att raden ser ut så här:

    skip-networking
  5. Spara dina ändringar i /etc/my.cnf fil och avsluta sedan textredigeraren.
  6. Skriv följande kommando för att starta om MySQL-tjänsten:

    service mysqld restart

    Port 3306 är nu stängd på servern.

Debian och Ubuntu

Som standard är MySQL på Debian och Ubuntu konfigurerad att endast använda localhost gränssnitt (IP-adress 127.0.0.1) för nätverk. Detta innebär att port 3306 är stängd för externa anslutningar. För att bekräfta att detta är konfigurationen på din server, följ dessa steg:

  1. Logga in på din server med SSH.
  2. Vid kommandotolken, använd din föredragna textredigerare för att öppna /etc/mysql/my.cnf fil.
  3. Leta upp MySQL bindningsadress rad i my.cnf fil. Det ska se ut så här:
    bind-address = 127.0.0.1
    Om MySQL bindningsadress linje är inställd på 0.0.0.0 (eller ingen adress alls), då är anslutningar öppna på alla gränssnitt.
  4. Om du har gjort några ändringar i /etc/my.cnf spara dem och avsluta sedan textredigeraren.
  5. För att starta om MySQL-tjänsten, skriv följande kommando:

    service mysql restart

    Port 3306 är nu stängd på servern.

Metod #2:Konfigurera brandväggsregler

Du kan använda iptables för att skapa brandväggsregler som begränsar åtkomst till port 3306. Fördelen med denna metod är att du selektivt kan bevilja eller neka åtkomst till port 3306 baserat på IP-adresser eller andra kriterier.

För att till exempel blockera extern åtkomst till port 3306 helt, skriv följande kommando:

iptables -A INPUT -p tcp --dport 3306 -j DROP

På liknande sätt, för att ge åtkomst till en specifik IP-adress och blockera alla andra, skriv följande kommandon. Ersätt xxx.xxx.xxx.xxx med den IP-adress som du vill ge åtkomst till:

iptables -A INPUT -p tcp --dport 3306 -s xxx.xxx.xxx.xxx -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP

Du kan ge MySQL åtkomst till ytterligare IP-adresser genom att infoga regler i INPUT kedja före DROP regel. Till exempel:

iptables -I INPUT 1 -p tcp --dport 3306 -s xxx.xxx.xxx.xxx -j ACCEPT

  1. Fixa "Konvertering misslyckades vid konvertering av varchar-värdet" När du försöker sammanfoga i SQL Server

  2. Automatisk ökning av tabellkolumnen

  3. PostgreSQL – Hur man eliminerar upprepade värden

  4. Finns det ett sådant CASE-uttryck i JPQL?