Pereiti prie pagrindinio turinio

Kaip leisti MySQL/MariaDB nuotolinius prisijungimus Ubuntu/Debian serveryje?

Šioje pamokoje parodoma, kaip leisti nuotolinius prisijungimus prie MySQL arba MariaDB serverio Ubuntu arba Debian sistemoje.

Atnaujinta šiandien

Pagal numatytuosius nustatymus Ubuntu MySQL serveris blokuoja visus nuotolinius prisijungimus. Dėl to prie duomenų bazės serverio negalima prisijungti iš išorės.

Norint įjungti MySQL nuotolinius prisijungimus, reikia redaguoti pagrindinį MySQL konfigūracijos failą.

Jei naudojate MySQL duomenų bazės serverį, konfigūracijos failas yra:

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

Jei naudojate MariaDB duomenų bazės serverį, konfigūracijos failas bus:

/etc/mysql/mariadb.conf.d/50-server.cnf

1. Redaguokite konfigūracijos failą

Pirmiausia atidarykite failą /etc/mysql/mysql.conf.d/mysqld.cnf. Jei naudojate MariaDB, vietoje šio kelio naudokite anksčiau nurodytą MariaDB konfigūracijos failo kelią:

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

Skiltyje [mysqld] raskite eilutę:

bind-address = 127.0.0.1

Tada pakeiskite ją į:

bind-address = 0.0.0.0

Pakeitę reikšmę į 0.0.0.0, nurodote MySQL klausytis visose prieinamose tinklo sąsajose, taip leisdami nuotolinius prisijungimus prie MySQL serverio.

2. Paleiskite paslaugą iš naujo

Išsaugoję pakeitimą faile, paleiskite MySQL arba MariaDB iš naujo.

MySQL atveju:

sudo systemctl restart mysql

MariaDB atveju:

sudo systemctl restart mariadb

3. Suteikite naudotojui teisę jungtis nuotoliniu būdu

Net jei serveris klausosi visose tinklo sąsajose, vis tiek turite suteikti nuotolinę prieigą konkrečiam naudotojui.

Prisijunkite prie MySQL arba MariaDB:

mysql -u root -p

Tada vykdykite šias komandas. Vietoje yourdb.*, yourpassword ir youruser įrašykite savo reikšmes:

CREATE USER 'youruser'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON yourdb.* TO 'youruser'@'%';
FLUSH PRIVILEGES;

Po to išeikite iš sistemos.

4. Patikrinkite, ar serveris klausosi visose tinklo sąsajose

Norėdami įsitikinti, kad MySQL serveris klausosi adresu 0.0.0.0:3306, vykdykite šią komandą.

MySQL atveju:

sudo ss -tulwn | grep 3306

MariaDB atveju:

sudo ss -tulwn | grep 3306

Jei serveris klausosi visose tinklo sąsajose, rezultatuose turėtumėte matyti 0.0.0.0:3306.

5. Pakoreguokite ugniasienės nustatymus

Jei jūsų VPS serveryje įjungta UFW ugniasienė, ji blokuos nuotolinę MySQL prieigą, todėl turite pridėti taisyklę ir atverti 3306 prievadą.

sudo ufw allow 3306/tcp

Ši taisyklė leidžia bet kuriam IP adresui iš bet kurios vietos pasaulyje jungtis prie 3306 prievado. Jei norite leisti prieigą tik iš konkretaus IP adreso, vykdykite šią komandą:

sudo ufw allow from <your_IP> to any port 3306

Jei naudojate iptables, vykdykite šią komandą, kad leistumėte prieigą iš bet kurio IP adreso:

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

Arba šią komandą, jei norite leisti prieigą tik iš konkretaus IP adreso:

sudo iptables -A INPUT -p tcp --dport 3306 -s <your_IP> -j ACCEPT

Tada išsaugokite pakeitimus:

sudo apt install -y iptables-persistent
sudo netfilter-persistent save

Svarbu: Turėkite omenyje, kad nuotolinių prisijungimų įjungimas MySQL serveryje saugumo požiūriu nėra geriausia praktika. Todėl nepalikite duomenų bazės serverio prieinamo iš išorės, nebent tai tikrai būtina, ypač produkcinėje aplinkoje.

Ar gavote atsakymą į savo klausimą?