Hur man tillåter fjärranslutningar till MySQL

Om du arbetar med en MySQL-databas(MySQL database) är du redan medveten om de utmaningar du står inför när det gäller att hålla din databas säker. Från databashackningsförsök med SQL -injektioner till brute force-attacker är det svårt att hålla dina data säkra, särskilt om du arbetar med en databas på distans.

Det finns sätt att konfigurera en SQL -server för att tillåta fjärranslutningar, men du måste vara försiktig, eftersom att tillåta fjärranslutningar på en MySQL -server kan göra din databas till ett enkelt mål för hackare. Om du vill tillåta säkra fjärranslutningar till en MySQL -databas, här är vad du behöver veta.

Innan du börjar(Before You Begin)

Innan du gör några ändringar i din MySQL -databas är det viktigt att du säkerhetskopierar din databas(backup your database) , speciellt om du arbetar på en produktionsserver (en server som används aktivt). Alla ändringar du gör i din databas, eller servern som är värd för den, kan resultera i allvarliga dataförluster om något går fel.

Du kan också upptäcka att ändringar av din servers anslutningar kan hindra dig från att komma åt den efteråt. Om detta händer kan du behöva rådfråga en serveradministratör för ytterligare support. En bra idé är att testa eventuella ändringar på en lokalt körd MySQL - server för att kontrollera om dina ändringar fungerar innan du provar dem på distans.

Det är också troligt att om du gör ändringar på en fjärrserver behöver du ett säkert sätt att ansluta och göra ändringar. SSH (Secure Shell) är ofta det bästa sättet att göra detta, eftersom det låter dig ansluta till din fjärrserver. Du kan också använda SSH för att ansluta till servrar på ditt lokala nätverk, till exempel de som finns på en Raspberry Pi(hosted on a Raspberry Pi) .

Den här guiden leder dig genom stegen för att konfigurera MySQL för att tillåta fjärranslutningar, men du måste först se till att du har direkt eller fjärråtkomst till servern som är värd för din MySQL -server.

Anta(Suppose) att du inte har fjärråtkomst till din server via SSH (till exempel). I så fall kommer du inte att kunna konfigurera din MySQL- databas för att tillåta fjärranslutningar direkt om inte ditt root-mySQL-konto redan tillåter fjärranslutningar. Så du måste upprätta den här anslutningen först innan du kan fortsätta.

Redigera din MySQL-konfigurationsfil(Editing Your MySQL Configuration File)

Det första steget i att konfigurera MySQL för att tillåta fjärranslutningar är att redigera din MySQL -konfigurationsfil. I detta skede kommer den här guiden att anta att du redan har anslutit till servern, PC eller Mac som är värd för din mySQL-databas på distans och har konsolåtkomst. 

Alternativt kan du konfigurera en lokal MySQL -server med en öppen terminal på Mac eller Linux eller en textredigerare på Windows .

  1. För att börja, använd din föredragna konsoltextredigerare för att redigera din MySQL -databasfil. På Linux skriver sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf i ett terminal- eller SSH -fönster för att redigera den här filen med nanoredigeraren(nano) (förutsatt att din MySQL- databas är på standardplatsen)

  1. Om du kör Windows , öppna Filutforskaren(File Explorer) och öppna mappen som innehåller din MySQL- installation (t.ex. C:/Program Files/MySQL/MySQL Server 8.0 ). Öppna filen my.ini med din standardtextredigerare (t.ex. Anteckningar(Notepad) ) genom att dubbelklicka på posten. Om den inte finns där, skapa filen först(create the file first) .

  1. Mac öppnar du ett terminalfönster och skriver sudo nano /usr/local/etc/my.cnf . Detta är standardkonfigurationsfilen för MySQL om du har installerat MySQL med homebrew(using homebrew) .

Platserna som refereras till ovan är standardplatserna för MySQL- konfigurationsfiler. Om dessa kommandon inte fungerar måste du söka efter de relevanta filerna ( my.cnf , mysqld.cnf eller my.ini ) manuellt för att hitta den relevanta filsökvägen.

Ställa in en säker bindningsadress IP-intervall(Setting a Safe Bind-Address IP Range)

  1. När du har öppnat MySQL -konfigurationsfilen för din server, använd tangentbordets piltangent för att komma till bindningsadressdelen(bind-address) av filen. Detta IP-intervall begränsar anslutningarna till din databas, som vanligtvis är inställd på att endast tillåta anslutningar från den lokala maskinen eller servern som använder 127.0.0.1 .

  1. Om du vill konfigurera din MySQL- databas för att tillåta anslutningar från enheter som använder din nuvarande internetanslutning, hitta din offentliga IP-adress(find your public IP address) först och ersätt sedan 127.0.0.1 med den IP-adressen. Alternativt kan du byta ut den mot en IP-adress för den enhet eller server du vill tillåta anslutningar från.

  1. I vissa fall kanske du vill tillåta alla(all) fjärranslutningar till en MySQL- databas. Detta innebär en extrem risk(extreme risk) och bör inte användas på en produktionsserver. Om du vill tillåta detta, ersätt dock 127.0.0.1 med 0.0.0.0 .

  1. Notera portvärdet(port ) i avsnittet Basic Settings . Detta kommer att krävas i nästa avsnitt. Om det inte är synligt kommer standardvärdet att användas, vilket är port 3306 . Du kan lägga till din egen port genom att skriva port = xxxx på en ny rad och ersätta xxxx med ett lämpligt portvärde.

  1. När du har konfigurerat bindningsadressen(bind-address ) i din MySQL -konfigurationsfil, spara filen. Om du använder Linux väljer du Ctrl + O och Ctrl + X för att göra detta. På Mac väljer du Command + O och Command + X . Windows-användare kan spara genom att välja Arkiv(File ) > Spara(Save) .

  1. Därefter kan Linux- och Mac - användare starta om MySQL genom att skriva mysql.server stop && mysql.server start eller mysql.server restart . Du kan behöva höja kommandot med sudo(using sudo) (t.ex. sudo mysql.server restart ) och använda lämplig sökväg till mysql.server-filen (t.ex. /usr/local/bin/mysql.server ).

  1.  Om kommandot ovan inte fungerar, prova sudo service mysql omstart(sudo service mysql restart ) istället.

  1. För att starta om MySQLWindows öppnar du ett nytt PowerShell -fönster genom att högerklicka på Start - menyn och välja Windows PowerShell (Admin) . I PowerShell-fönstret skriver du net stop mysql80(net stop mysql80 ) följt av net start mysql80 , och ersätter mysql80 med rätt tjänstnamn på din PC.

Om du är osäker på rätt tjänstnamn på Windows skriver du net start för att hitta det. Om du inte kan ladda om din konfiguration, starta om din server och ladda om MySQL manuellt (om nödvändigt) istället.

Konfigurera dina brandväggar(Configuring Your Firewalls)

I det här skedet bör din MySQL - databas tillåta fjärranslutningar från enheter som använder den IP-adress du anger som bindningsadressvärde(bind-address) i din MySQL -konfigurationsfil (eller från alla enheter om du ställer in detta värde till 0.0.0.0 istället). Dock kommer anslutningar fortfarande att blockeras av din enhet eller nätverksbrandvägg(device or network firewall) .

De flesta servrar och datorer använder en brandvägg för att blockera anslutningar om inte åtkomst till en specifik port beviljas. Stegen för att konfigurera detta kommer att variera beroende på om du kör MySQLWindows eller Linux . Mac -brandväggar är inaktiverade som standard, så du ska inte behöva utföra några ytterligare steg här.

Konfigurera Linux-brandväggar(Configure Linux Firewalls)

Många Linux-servrar använder iptables som standardbrandväggsverktyg. Du kan konfigurera den genom att följa stegen nedan.

  1. Öppna en terminal eller SSH -anslutning och skriv sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT . Ersätt XXXX med IP-adressen för enheten du vill tillåta MySQL - anslutningar från(from) och ersätt YYYY med det matchande portvärdet från din MySQL -konfigurationsfil (t.ex. 3306 ).

  1. Detta kommer att konfigurera brandväggen tillfälligt. Om du använder en Debian- eller Ubuntu-baserad Linux - server, gör denna ändring permanent genom att skriva sudo netfilter-persistent save och sudo netfilter-persistent reload i terminal- eller SSH-fönstret.

Om iptables inte är standardbrandväggsverktyget för din Linux- distribution, måste du konsultera din distributions användarmanual för mer information. Om vissa paket (som netfilter-persistent ) är otillgängliga, använd din distributions programvarulagringsverktyg för att installera det (t.ex. sudo apt install netfilter-persistent ).

Konfigurera Windows-brandväggar(Configure Windows Firewalls)

Om du använder en Windows-dator eller -server för att vara värd för din databas, kan du konfigurera din brandvägg med dessa steg:

  1. Högerklicka(Right-click)Start - menyn och välj Kör(Run) .

  1. Skriv wf.msc(wf.msc) i rutan Kör(Run) och välj OK .

  1. I Windows Defender- fönstret väljer du Inkommande regler(Inbound Rules ) > Ny regel(New Rule) .

  1. I fönstret New Inbound Rule Wizard väljer du Port > Nästa(Next) .

  1. I nästa meny, välj TCP från alternativen, skriv 3306 (eller vilket portvärde som finns i din MySQL -konfigurationsfil), välj sedan Nästa(Next) .

  1. På menyn Åtgärd(Action) lämnar du standardalternativet Tillåt anslutningen(Allow the connection) aktiverad och väljer sedan Nästa(Next) .

  1. Bekräfta att du vill att regeln ska gälla för alla nätverkstyper och välj sedan Nästa(Next)

  1. Skriv ett beskrivande namn för regeln (t.ex. MySQL ) i den angivna porten och välj sedan Slutför(Finish) för att lägga till den i din lista över brandväggsregler.

Om du har problem med att ansluta, upprepa dessa steg ovan och se till att skapa en ny utgående regel(outbound rule ) i dina brandväggsinställningar med samma detaljer (port 3306, etc). Du kan också behöva konfigurera din lokala nätverksrouter för att öppna nödvändiga blockerade portar(open the necessary blocked ports) för att tillåta inkommande och utgående anslutningar till din databas. 

Ansluta till en fjärrserver med MySQL(Connecting to a Remote Server Using MySQL)

Efter att ha konfigurerat din MySQL- databas för att tillåta fjärranslutningar, måste du faktiskt upprätta en anslutning till den. Du kan göra detta med kommandot mysql ( mysql.exeWindows ) från en terminal eller ett PowerShell- fönster.

Om du kör Windows måste du se till att MySQL är installerat lokalt(MySQL is installed locally) innan du börjar. Mac -användare kan installera MySQL med homebrew(using homebrew) från terminalen ( brew install mysql ), medan Linux- användare kan använda sitt lokala applager (t.ex. sudo apt install mysql ) för att installera de nödvändiga paketen.

Ansluter till MySQL på Linux eller Mac(Connecting to MySQL on Linux or Mac)

  1. För att ansluta till din fjärranslutna MySQL -server på Mac eller Linux , öppna ett nytt terminalfönster och skriv mysql -u användarnamn -h XXXX:XXXX -p(mysql -u username -h X.X.X.X:XXXX -p) . Ersätt XXXX:XXXX med din fjärrservers IP-adress och portnummer (t.ex. 100.200.100.200:3306 ) och användarnamn(username) med ditt MySQL-användarnamn.

  1. När du uppmanas, bekräfta ditt lösenord. Om anslutningen lyckas visas ett meddelande om framgång i terminalen.

Ansluter till MySQL på Windows(Connecting to MySQL on Windows)

  1. För att ansluta till en fjärransluten MySQL -server på Windows öppnar du ett nytt PowerShell -fönster genom att högerklicka på Start - menyn och välja Windows PowerShell (Admin) .

  1. I det nya PowerShell-fönstret, skriv cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ ” för att ange rätt mapp, ersätt denna katalog med rätt installationskatalog på din PC. Till exempel, om din version av MySQL är 8.0.1, använd mappen MySQL Workbench 8.0.1 istället.

  1. Därifrån skriver .\mysql.exe -u username -h X.X.X.X:XXXX -p . Ersätt XXXX:XXXX med din fjärrservers IP-adress och portnummer (t.ex. 100.200.100.200:3306 ) och användarnamn(username) med ett MySQL -användarnamn som tillåter fjärråtkomst (som root ). Följ(Follow) eventuella ytterligare instruktioner på skärmen.
  2. Ange ditt lösenord när du uppmanas att slutföra inloggningsprocessen och komma åt din MySQL - databas på distans.

Om detta inte fungerar, anslut till servern eller PC:n som är värd för din MySQL -server med SSH (eller få tillgång till den direkt) genom att använda dessa steg och använda -h localhost- argumentet. Du kan sedan skapa ett lämpligt användarkonto genom att följa stegen nedan.

Tillåter fjärranvändaråtkomst till en MySQL-databas(Allowing Remote User Access to a MySQL Database)

Vid det här laget bör du kunna ansluta till din MySQL -server på distans med hjälp av din servers root-användarkonto eller ett annat användarkonto med förhöjda privilegier. Eftersom denna åtkomstnivå är osäker kanske du föredrar att skapa ett mer begränsat konto för åtkomst till din MySQL- databas.

Detta konto kommer att ha begränsad åtkomst till din MySQL -server, vilket gör att det endast kan interagera med utvalda databaser. Det kommer inte att kunna göra mer seriösa ändringar, som att komma åt annan databasdata, skapa nya användarkonton, etc. 

Du måste ha möjlighet att logga in på din MySQL -server på distans. Om du inte kan använda ditt root-konto på distans, måste du komma åt din servers skal med hjälp av mysql- kommandot via en fjärransluten SSH- anslutning eller genom att direkt komma åt datorn eller servern som är värd för servern.

  1. I ditt fjärranslutna MySQL - skal (med hjälp av mysql- verktyget), skriv CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; och välj Enter . Byt ut användarnamnet(username ) med det användarnamn du vill skapa, xxxx med den IP-adress du vill ansluta från och lösenordet(password) med ett passande lösenord.

  1. Du måste ge ditt nya konto de nödvändiga behörigheterna. För att göra detta, skriv GRANT ALL ON databasename.* TO username@”x.x.x.x”; och ersätt databasnamn, användarnamn(databasename, username, ) och xxxx  med korrekta uppgifter. Om du vill, ersätt databasnamn(databasename) med * för att ge den åtkomst till alla databaser. 

Med åtkomst beviljad, använd stegen i avsnittet ovan för att ansluta till din server på distans med ditt nya konto (t.ex. mysql -u användarnamn -h XXXX:XXXX -p(mysql -u username -h X.X.X.X:XXXX -p) ).

Säkra din databasdata(Securing Your Database Data)

Oavsett om du arbetar med MySQL eller annan typ av SQL -databas är det viktigt att hålla dina anslutningar säkra för att upprätthålla din datasäkerhet. Ett bra sätt att göra detta är att generera SSH-nycklar för fjärråtkomst(generate SSH keys for remote access) till din server, snarare än att förlita sig på föråldrade (och lätt gissa) lösenord.

Om du är orolig för dataförlust kan du enkelt säkerhetskopiera din databas(back up your database) online. De flesta databaser körs med Linux -servrar – du kan enkelt automatisera en backup av Linux-filer(automate a Linux file backup easily) . Om du kör MySQLWindows kan du ställa in ett liknande automatiskt säkerhetskopieringssystem för Windows(automatic backup system for Windows) så att du kan återställa dina data i en nödsituation.



About the author

Jag är en webbutvecklare med över 10 års erfarenhet av att arbeta med webbläsarna Firefox och Google Docs. Jag är specialist på att skapa enkla men kraftfulla onlineapplikationer och har utvecklat webbaserade lösningar för både små företag och stora organisationer. Min kundbas inkluderar några av de största företagen, inklusive FedEx, Coca Cola och Macy's. Mina kunskaper som utvecklare gör mig till en idealisk kandidat för alla projekt som behöver slutföras snabbt och effektivt - från att utveckla anpassade webbplatser till att skapa robusta e-postmarknadsföringskampanjer.



Related posts