Android

Paano pinapayagan ang mga malalayong koneksyon sa mysql database server

Setting up Microsoft SQL Express and the firewall for remote communication with S7-1200/S7-1500

Setting up Microsoft SQL Express and the firewall for remote communication with S7-1200/S7-1500

Talaan ng mga Nilalaman:

Anonim

Bilang default, nakikinig ang MySQL server para sa mga koneksyon lamang mula sa localhost, na nangangahulugang maaari itong mai-access lamang sa pamamagitan ng mga application na tumatakbo sa parehong host.

Gayunpaman, sa ilang mga sitwasyon, kinakailangan upang ma-access ang MySQL server mula sa malayong lokasyon. Halimbawa, kung nais mong kumonekta sa malayong MySQL server mula sa iyong lokal na sistema, o kapag gumagamit ng isang pag-deploy ng multi-server kung saan tumatakbo ang application sa ibang machine mula sa database server. Ang isang pagpipilian ay ang pag-access sa MySQL server sa pamamagitan ng SSH Tunnel at isa pa ay upang mai-configure ang MySQL server upang tanggapin ang mga malalayong koneksyon.

Sa gabay na ito, pupunta kami sa mga hakbang na kinakailangan upang payagan ang mga malalayong koneksyon sa isang server ng MySQL. Ang parehong mga tagubilin ay nalalapat para sa MariaDB.

Pag-configure ng MySQL Server

Ang unang hakbang ay upang itakda ang MySQL server upang makinig sa isang tukoy na IP address o lahat ng mga IP address sa makina.

Kung ang server ng MySQL at kliyente ay maaaring makipag-usap sa bawat isa sa isang pribadong network, kung gayon ang pinakamahusay na pagpipilian ay upang itakda ang MySQL server upang makinig lamang sa pribadong IP. Kung hindi, kung nais mong kumonekta sa server sa isang pampublikong network itakda ang MySQL server upang makinig sa lahat ng mga IP address sa machine.

Upang gawin ito, kailangan mong i-edit ang file ng pagsasaayos ng MySQL at idagdag o baguhin ang halaga ng pagpipilian ng bind-address . Maaari kang magtakda ng isang solong IP address at mga saklaw ng IP. Kung ang address ay 0.0.0.0 , ang MySQL server ay tumatanggap ng mga koneksyon sa lahat ng mga interface ng IPv4. Kung mayroon kang naka-configure sa IPv6 sa iyong system, pagkatapos ay sa halip na 0.0.0.0 , gamitin ang :: .

Ang lokasyon ng file ng pagsasaayos ng MySQL ay naiiba depende sa pamamahagi. Sa Ubuntu at Debian ang file ay matatagpuan sa /etc/mysql/mysql.conf.d/mysqld.cnf , habang sa Red Hat batay sa pamamahagi tulad ng CentOS, ang file ay matatagpuan sa /etc/my.cnf .

Buksan ang file gamit ang iyong text editor:

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

Maghanap ng isang linya na nagsisimula sa bind-address at itakda ang halaga nito sa IP address kung saan dapat makinig ng isang MySQL server.

Bilang default, ang halaga ay nakatakda sa 127.0.0.1 (nakikinig lamang sa localhost).

Sa halimbawang ito, itatakda namin ang MySQL server upang makinig sa lahat ng mga interface ng IPv4 sa pamamagitan ng pagbabago ng halaga sa 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Kung mayroong isang linya na naglalaman ng skip-networking , tanggalin ito o puna ito sa pamamagitan ng pagdaragdag ng # sa simula ng linya.

Sa MySQL 8.0 at mas mataas, ang bind-address ng bind-address ay maaaring hindi naroroon. Sa kasong ito, idagdag ito sa ilalim ng seksyon.

Kapag tapos na, i-restart ang serbisyo ng MySQL para sa mga pagbabago na magkakabisa. Ang mga ugat o mga gumagamit lamang na may mga pribilehiyo ng sudo ang maaaring mag-restart ng mga serbisyo.

Upang ma-restart ang serbisyo ng MySQL sa Debian o Ubuntu, uri:

sudo systemctl restart mysql

Sa mga pamamahagi batay sa RedHat tulad ng CentOS upang mai-restart ang serbisyo run:

sudo systemctl restart mysqld

Ang pagbibigay ng access sa isang Gumagamit mula sa isang Remote Machine

Ang susunod na hakbang ay upang payagan ang pag-access sa database sa malayong gumagamit.

Mag-log in sa MySQL server bilang root user sa pamamagitan ng pag-type:

sudo mysql

mysql -uroot -p

Mula sa loob ng shell ng MySQL, gamitin ang pahayag GRANT upang magbigay ng access para sa malayong gumagamit.

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

Kung saan:

  • database_name ay ang pangalan ng database na ikokonekta ng gumagamit. user_name ay ang pangalan ay ang MySQL user. ip_address ay ang IP address kung saan kumokonekta ang gumagamit. Gumamit ng % upang payagan ang gumagamit na kumonekta mula sa anumang IP address. user_password ay ang password ng gumagamit.

Halimbawa, upang magbigay ng access sa isang dbname database sa isang gumagamit na nagngangalang foo may password my_passwd mula sa isang makina ng kliyente na may IP 10.8.0.5 , tatakbo ka:

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

Pag-configure ng Firewall

Ang huling hakbang ay upang mai-configure ang iyong firewall upang payagan ang trapiko sa port 3306 (default port MySQL) mula sa mga malayong makina.

Mga Iptables

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

Payagan ang pag-access mula sa isang tukoy na IP address:

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

UFW

Ang UFW ay ang default na tool ng firewall sa Ubuntu. Upang payagan ang pag-access mula sa anumang IP address sa Internet (napaka-insecure) na tumakbo:

sudo ufw allow 3306/tcp

Payagan ang pag-access mula sa isang tukoy na IP address:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

Ang FirewallD ay ang default na tool sa pamamahala ng firewall sa CentOS. Upang payagan ang pag-access mula sa anumang IP address sa Internet (napaka-insecure) na uri:

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

Upang payagan ang pag-access mula sa isang tukoy na IP address sa isang tiyak na daungan, maaari kang lumikha ng isang bagong zone ng FirewallD o gumamit ng isang mayaman na patakaran. Mahusay na lumikha ng isang bagong zone na nagngangalang 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

Pag-verify ng Mga Pagbabago

Upang mapatunayan na ang malayong gumagamit ay maaaring kumonekta sa MySQL server na patakbuhin ang sumusunod na utos:

mysql -u user_name -h mysql_server_ip -p

Kung saan ang user_name ay ang pangalan ng gumagamit na binigyan mo ng access at mysql_server_ip ay ang IP address ng host kung saan tumatakbo ang MySQL server.

Kung ang lahat ay naka-setup nang tama, magagawa mong mag-login sa malayong server ng MySQL.

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

Ang error sa ibaba ay nagpapahiwatig na ang gumagamit na sinusubukan mong mag-log in ay walang mga pahintulot upang ma-access ang malayong MySQL server.

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

Konklusyon

MySQL, ang pinakasikat na open-source database server nang default, nakikinig sa mga papasok na koneksyon lamang sa localhost.

Upang payagan ang mga malalayong koneksyon sa isang MySQL server, kailangan mong gawin ang mga sumusunod na hakbang:

  1. I-configure ang MySQL server upang makinig sa lahat o isang tiyak na interface.Grant access sa malayong user.Open the MySQL port sa iyong firewall.
mysql mariadb