Android

Hoe externe verbindingen met mysql-databaseserver toe te staan

VB NET Create Connection from Client To Remote Server MySQL 2017

VB NET Create Connection from Client To Remote Server MySQL 2017

Inhoudsopgave:

Anonim

Standaard luistert de MySQL-server alleen naar verbindingen van localhost, wat betekent dat deze alleen toegankelijk is voor toepassingen die op dezelfde host worden uitgevoerd.

In sommige situaties is het echter noodzakelijk om toegang te krijgen tot de MySQL-server vanaf een externe locatie. Bijvoorbeeld wanneer u verbinding wilt maken met de externe MySQL-server vanaf uw lokale systeem, of wanneer u een multi-server-implementatie gebruikt waarbij de toepassing op een andere machine draait dan de databaseserver. Een optie zou zijn om toegang te krijgen tot de MySQL-server via SSH Tunnel en een andere optie is om de MySQL-server te configureren om externe verbindingen te accepteren.

In deze handleiding zullen we de stappen doorlopen die nodig zijn om externe verbindingen met een MySQL-server toe te staan. Dezelfde instructies gelden voor MariaDB.

MySQL Server configureren

De eerste stap is het instellen van de MySQL-server om te luisteren op een specifiek IP-adres of alle IP-adressen op de machine.

Als de MySQL-server en clients via een privénetwerk met elkaar kunnen communiceren, is de beste optie om de MySQL-server zo in te stellen dat deze alleen op het private IP-adres luistert. Als u anders verbinding wilt maken met de server via een openbaar netwerk, stelt u de MySQL-server in op alle IP-adressen op de machine.

Hiertoe moet u het MySQL-configuratiebestand bewerken en de waarde van de bind-address toevoegen of wijzigen. U kunt een enkel IP-adres en IP-bereiken instellen. Als het adres 0.0.0.0 , accepteert de MySQL-server verbindingen op alle IPv4-interfaces van de host. Als u IPv6 op uw systeem hebt geconfigureerd, gebruik dan :: plaats van 0.0.0.0 .

De locatie van het MySQL-configuratiebestand verschilt afhankelijk van de distributie. In Ubuntu en Debian bevindt het bestand zich op /etc/mysql/mysql.conf.d/mysqld.cnf , terwijl in Red Hat-gebaseerde distributies zoals CentOS het bestand zich bevindt op /etc/my.cnf .

Open het bestand met uw teksteditor:

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

Zoek naar een regel die begint met bind-address en stel de waarde in op het IP-adres waarnaar een MySQL-server moet luisteren.

De waarde is standaard ingesteld op 127.0.0.1 (luistert alleen in localhost).

In dit voorbeeld stellen we de MySQL-server in om op alle IPv4-interfaces te luisteren door de waarde te wijzigen naar 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Als er een regel met skip-networking , verwijdert u deze of geeft u een opmerking door # aan het begin van de regel toe te voegen.

In MySQL 8.0 en hoger is de bind-address adresrichtlijn mogelijk niet aanwezig. Voeg deze in dit geval toe onder de sectie.

Nadat u klaar bent, start u de MySQL-service opnieuw om de wijzigingen door te voeren. Alleen root of gebruikers met sudo-rechten kunnen services opnieuw starten.

Typ het volgende om de MySQL-service opnieuw te starten op Debian of Ubuntu:

sudo systemctl restart mysql

Op RedHat gebaseerde distributies zoals CentOS om de service run opnieuw te starten:

sudo systemctl restart mysqld

Toegang verlenen aan een gebruiker vanaf een externe machine

De volgende stap is om de externe gebruiker toegang tot de database te verlenen.

Log in op de MySQL-server als rootgebruiker door het volgende te typen:

sudo mysql

mysql -uroot -p

Gebruik vanuit de MySQL-shell de instructie GRANT om toegang te verlenen aan de externe gebruiker.

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

Waar:

  • database_name is de naam van de database waarmee de gebruiker verbinding zal maken. user_name is de naam van de MySQL-gebruiker. ip_address is het IP-adres waarmee de gebruiker verbinding maakt. Gebruik % om de gebruiker toe te staan ​​verbinding te maken vanaf elk IP-adres. user_password is het gebruikerswachtwoord.

Als u bijvoorbeeld toegang wilt verlenen tot een database- dbname aan een gebruiker met de naam foo met wachtwoord my_passwd vanaf een clientcomputer met IP 10.8.0.5 , zou u het volgende uitvoeren:

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

Firewall configureren

De laatste stap is het configureren van uw firewall om verkeer op poort 3306 (standaardpoort MySQL) van de externe machines toe te staan.

iptables

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

Toegang toestaan ​​vanaf een specifiek IP-adres:

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

UFW

UFW is het standaard firewall-hulpprogramma in Ubuntu. Toegang vanaf elk IP-adres op internet (zeer onveilig) uitvoeren:

sudo ufw allow 3306/tcp

Toegang toestaan ​​vanaf een specifiek IP-adres:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD is het standaard firewallbeheerprogramma in CentOS. Om toegang toe te staan ​​vanaf elk IP-adres op internet (erg onveilig) type:

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

Om toegang vanaf een specifiek IP-adres op een specifieke poort toe te staan, kunt u een nieuwe FirewallD-zone maken of een rich rule gebruiken. Maak een nieuwe zone met de naam 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

Wijzigingen controleren

Voer de volgende opdracht uit om te controleren of de externe gebruiker verbinding kan maken met de MySQL-server:

mysql -u user_name -h mysql_server_ip -p

Waar user_name is de naam van de gebruiker mysql_server_ip u toegang hebt verleend en mysql_server_ip is het IP-adres van de host waarop de MySQL-server wordt uitgevoerd.

Als alles correct is ingesteld, kunt u zich aanmelden bij de externe MySQL-server.

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

De onderstaande fout geeft aan dat de gebruiker die u probeert in te loggen geen machtigingen heeft voor toegang tot de externe MySQL-server.

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

Conclusie

MySQL, de meest populaire open-source databaseserver, luistert standaard alleen naar inkomende verbindingen op localhost.

Om externe verbindingen met een MySQL-server toe te staan, moet u de volgende stappen uitvoeren:

  1. Configureer de MySQL-server om op alle of een specifieke interface te luisteren. Toegang tot de externe gebruiker. Open de MySQL-poort in uw firewall.
mysql mariadb