Android

Hur tillåter jag fjärranslutningar till mysql-databasservern

Como ter Acesso Remoto ao MYSQL com XAMP e Windows

Como ter Acesso Remoto ao MYSQL com XAMP e Windows

Innehållsförteckning:

Anonim

Som standard lyssnar MySQL-servern endast på anslutningar från localhost, vilket innebär att den endast kan nås av applikationer som körs på samma värd.

I vissa situationer är det dock nödvändigt att komma åt MySQL-servern från fjärrplats. Till exempel när du vill ansluta till den fjärrstyrda MySQL-servern från ditt lokala system, eller när du använder en multiserverinstallation där applikationen körs på en annan maskin från databaseservern. Ett alternativ skulle vara att komma åt MySQL-servern via SSH-tunneln och ett annat är att konfigurera MySQL-servern så att den accepterar fjärranslutningar.

I den här guiden kommer vi att gå igenom stegen som krävs för att tillåta fjärranslutningar till en MySQL-server. Samma instruktioner gäller för MariaDB.

Konfigurera MySQL Server

Det första steget är att ställa in MySQL-servern att lyssna på en specifik IP-adress eller alla IP-adresser på maskinen.

Om MySQL-servern och klienterna kan kommunicera med varandra via ett privat nätverk, är det bästa alternativet att ställa in MySQL-servern så att den bara lyssnar på den privata IP-adressen. Annars, om du vill ansluta till servern via ett offentligt nätverk, ställ MySQL-servern in för att lyssna på alla IP-adresser på maskinen.

För att göra det måste du redigera MySQL-konfigurationsfilen och lägga till eller ändra värdet för alternativet bind-address . Du kan ställa in en enda IP-adress och IP-intervall. Om adressen är 0.0.0.0 accepterar MySQL-servern anslutningar på alla värd IPv4-gränssnitt. Om du har IPv6 konfigurerat på ditt system använder du :: istället för 0.0.0.0 .

Platsen för MySQL-konfigurationsfilen skiljer sig beroende på distributionen. I Ubuntu och Debian finns filen på /etc/mysql/mysql.conf.d/mysqld.cnf , medan /etc/mysql/mysql.conf.d/mysqld.cnf i Red Hat-baserade distributioner som CentOS ligger på /etc/my.cnf .

Öppna filen med din textredigerare:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Sök efter en rad som börjar med bind-address och ställ in dess värde på IP-adressen som en MySQL-server ska lyssna på.

Som standard är värdet inställt på 127.0.0.1 (lyssnar endast i localhost).

I det här exemplet ställer vi in ​​MySQL-servern så att den lyssnar på alla IPv4-gränssnitt genom att ändra värdet till 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Om det finns en rad som innehåller skip-networking , ta bort den eller kommentera den genom att lägga till # i början av raden.

I MySQL 8.0 och senare kanske inte bindeadressdirektivet finns. Lägg i det här fallet till under sektion.

När du är klar, starta om MySQL-tjänsten så att ändringarna träder i kraft. Endast root eller användare med sudo-privilegier kan starta om tjänster.

Om du vill starta om MySQL-tjänsten på Debian eller Ubuntu skriver du:

sudo systemctl restart mysql

På RedHat-baserade distributioner som CentOS för att starta om servicekörningen:

sudo systemctl restart mysqld

Ge åtkomst till en användare från en fjärrmaskin

Nästa steg är att tillåta åtkomst till databasen till fjärranvändaren.

Logga in på MySQL-servern som rotanvändare genom att skriva:

sudo mysql

mysql -uroot -p

Från inuti MySQL-skalet använder du GRANT uttalandet för att ge åtkomst för fjärranvändaren.

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

Var:

  • database_name är namnet på databasen som användaren kommer att ansluta till. user_name är namnet på MySQL-användaren. ip_address är den IP-adress som användaren kommer att ansluta till. Använd % att låta användaren ansluta från vilken IP-adress som helst. user_password är användarlösenordet.

Till exempel, för att ge åtkomst till en databasdbname till en användare som heter foo med lösenord my_passwd från en 10.8.0.5 med IP 10.8.0.5 , skulle du köra:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

Konfigurera brandväggen

Det sista steget är att konfigurera din brandvägg för att tillåta trafik på port 3306 (MySQL standardport) från fjärrmaskinerna.

iptables

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

Tillåt åtkomst från en specifik IP-adress:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

UFW är standard brandväggsverktyget i Ubuntu. För att tillåta åtkomst från vilken IP-adress som helst på internet (mycket osäker) kör:

sudo ufw allow 3306/tcp

Tillåt åtkomst från en specifik IP-adress:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD är standardverktyg för brandväggshantering i CentOS. Så här tillåter du åtkomst från vilken IP-adress som helst på Internet (mycket osäker):

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload

För att tillåta åtkomst från en specifik IP-adress i en specifik port kan du antingen skapa en ny FirewallD-zon eller använda en rik regel. Skapa en ny zon med namnet mysqlzone :

sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --reload sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd --reload

Verifiera ändringarna

Följ följande kommando för att verifiera att fjärranvändaren kan ansluta till MySQL-servern:

mysql -u user_name -h mysql_server_ip -p

Där user_name är namnet på den användare som du beviljade åtkomst till och mysql_server_ip är IP-adressen till värden där MySQL-servern körs.

Om allt är korrekt inställt kan du logga in på den fjärranslutna MySQL-servern.

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

Felet nedan indikerar att användaren du försöker logga in inte har behörigheter att få åtkomst till den fjärrkontroll MySQL-servern.

"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"

Slutsats

MySQL, den mest populära databasservern med öppen källkod, lyssnar som standard på inkommande anslutningar endast på localhost.

För att tillåta fjärranslutningar till en MySQL-server måste du utföra följande steg:

  1. Konfigurera MySQL-servern för att lyssna på alla eller ett specifikt gränssnitt. Ge åtkomst till fjärranvändaren. Öppna MySQL-porten i din brandvägg.
mysql mariadb