Android

Sådan tillades fjernforbindelser til mysql databaseserver

Sådan Tillades Meddelelser for iOS - PARKPARK GUIDE

Sådan Tillades Meddelelser for iOS - PARKPARK GUIDE

Indholdsfortegnelse:

Anonim

Som standard lytter MySQL-serveren kun til forbindelser fra localhost, hvilket betyder, at den kun kan fås adgang til af applikationer, der kører på den samme vært.

I nogle situationer er det imidlertid nødvendigt at få adgang til MySQL-serveren fra fjernplacering. For eksempel, når du vil oprette forbindelse til den eksterne MySQL-server fra dit lokale system, eller når du bruger en multi-serverinstallation, hvor applikationen kører på en anden maskine end databaseserveren. En mulighed ville være at få adgang til MySQL-serveren gennem SSH-tunnelen, og en anden er at konfigurere MySQL-serveren til at acceptere fjernforbindelser.

I denne vejledning gennemgår vi de nødvendige trin for at tillade fjernforbindelser til en MySQL-server. De samme instruktioner gælder for MariaDB.

Konfiguration af MySQL Server

Det første trin er at indstille MySQL-serveren til at lytte på en bestemt IP-adresse eller alle IP-adresser på maskinen.

Hvis MySQL-serveren og klienterne kan kommunikere med hinanden via et privat netværk, er den bedste mulighed at indstille MySQL-serveren til kun at lytte på den private IP. Ellers, hvis du vil oprette forbindelse til serveren via et offentligt netværk, skal du indstille MySQL-serveren til at lytte på alle IP-adresser på maskinen.

For at gøre dette skal du redigere MySQL-konfigurationsfilen og tilføje eller ændre værdien af ​​indstillingen bind-address . Du kan indstille en enkelt IP-adresse og IP-intervaller. Hvis adressen er 0.0.0.0 , accepterer MySQL-serveren forbindelser på alle vært IPv4-grænseflader. Hvis du har IPv6 konfigureret på dit system, skal du bruge :: stedet for 0.0.0.0 .

Placeringen af ​​MySQL-konfigurationsfilen varierer afhængigt af distributionen. I Ubuntu og Debian er filen placeret på /etc/mysql/mysql.conf.d/mysqld.cnf , mens filen i Red Hat-baserede distributioner som CentOS er filen placeret på /etc/my.cnf .

Åbn filen med din teksteditor:

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

Søg efter en linje, der begynder med bind-address og indstil dens værdi til den IP-adresse, som en MySQL-server skal lytte til.

Som standard er værdien indstillet til 127.0.0.1 (lytter kun i localhost).

I dette eksempel indstiller vi MySQL-serveren til at lytte på alle IPv4-grænseflader ved at ændre værdien til 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Hvis der er en linje, der indeholder skip-networking , skal du slette den eller kommentere den ved at tilføje # i starten af ​​linjen.

I MySQL 8.0 og nyere er bind-address muligvis ikke til stede. I dette tilfælde skal du tilføje det under afsnit.

Når det er gjort, skal du genstarte MySQL-tjenesten, så ændringerne træder i kraft. Kun root eller brugere med sudo-privilegier kan genstarte tjenester.

For at genstarte MySQL-tjenesten på Debian eller Ubuntu, skal du skrive:

sudo systemctl restart mysql

På RedHat-baserede distributioner som CentOS for at genstarte servicekørslen:

sudo systemctl restart mysqld

At give adgang til en bruger fra en ekstern maskine

Det næste trin er at give adgang til databasen til den eksterne bruger.

Log ind på MySQL-serveren som root-bruger ved at skrive:

sudo mysql

mysql -uroot -p

Fra inde i MySQL-shell skal du bruge GRANT sætningen til at give adgang til fjernbrugeren.

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

Hvor:

  • database_name er navnet på den database, som brugeren vil oprette forbindelse til. user_name er navnet på MySQL-brugeren. ip_address er den IP-adresse, som brugeren vil oprette forbindelse fra. Brug % til at give brugeren mulighed for at oprette forbindelse fra enhver IP-adresse. user_password er brugeradgangskoden.

For at give adgang til en database dbname til en bruger ved navn foo med password my_passwd fra en klientmaskine med IP 10.8.0.5 , kører du f.eks.

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

Konfiguration af firewall

Det sidste trin er at konfigurere din firewall til at tillade trafik på port 3306 (MySQL standardport) fra fjernmaskinerne.

iptables

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

Tillad adgang fra en bestemt IP-adresse:

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

UFW

UFW er standard firewall-værktøjet i Ubuntu. For at give adgang fra enhver IP-adresse på Internettet (meget usikker) kørsel:

sudo ufw allow 3306/tcp

Tillad adgang fra en bestemt IP-adresse:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD er standardværktøjet til firewalladministration i CentOS. For at give adgang fra enhver IP-adresse på Internettet (meget usikker) type:

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

For at give adgang fra en bestemt IP-adresse på en bestemt port, kan du enten oprette en ny FirewallD-zone eller bruge en rig regel. Opret en ny zone med navnet 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

Bekræftelse af ændringerne

For at kontrollere, at den eksterne bruger kan oprette forbindelse til MySQL-serveren, skal du køre følgende kommando:

mysql -u user_name -h mysql_server_ip -p

Hvor user_name er navnet på den bruger, du har givet adgang til, og mysql_server_ip er IP-adressen på den vært, hvor MySQL-serveren kører.

Hvis alt er konfigureret korrekt, kan du logge ind på den eksterne MySQL-server.

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

Fejlen nedenfor indikerer, at den bruger, du prøver at logge på, ikke har tilladelser til at få adgang til den eksterne MySQL-server.

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

Konklusion

MySQL, den mest populære open source-databaseserver, lytter som standard kun til indgående forbindelser på localhost.

For at tillade fjernforbindelser til en MySQL-server skal du udføre følgende trin:

  1. Konfigurer MySQL-serveren til at lytte til alle eller en bestemt grænseflade. Giv adgang til den eksterne bruger. Åbn MySQL-porten i din firewall.
mysql mariadb