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.
