Kuidas lubada MySQL-i kaugjuurdepääs
Vaikimisi võtab MySQL vastu ainult kohalikke ühendusi serverist endast. Selles juhendis lubate andmebaasiga ühenduse luua teisest arvutist või rakendusest, näiteks veebilehelt või mänguserverist.
Mida on vaja enne alustamist
- VPS-serverit Linuxi ning paigaldatud MySQL-i või MariaDB-ga.
- Kasutajat sudo-õigustega.
- Selle arvuti või serveri avalikku IP-aadressi, millest ühenduse loote.
Kaugjuurdepääsu lubamine
-
Looge serveriga SSH-ühendus
Looge oma VPS-serveriga SSH-ühendus. Loe lähemalt: Kuidas kasutada PuTTY-t.
-
Muutke bind-address seadet
Avage andmebaasi konfiguratsioonifail. Tee sõltub sellest, mida kasutate:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnfsudo nano /etc/mysql/mariadb.conf.d/50-server.cnfVajutage Ctrl + W ja otsige bind-address. Vaikimisi lubab see ainult kohalikke ühendusi:
bind-address = 127.0.0.1Muutke väärtust, et server võtaks vastu väliseid ühendusi:
bind-address = 0.0.0.0Kui failis pole rida bind-address, lisage see rea [mysqld] alla.
Kuidas salvestadaCtrl + O ja Enter salvestavad faili, Ctrl + X väljub redaktorist.
-
Taaskäivitage andmebaasiteenus
Muudatuste rakendamiseks taaskäivitage teenus:
sudo systemctl restart mysqlsudo systemctl restart mariadb -
Valmistage kasutaja kaugühenduseks ette
Avage MySQL-i konsool:
sudo mysqlKui näete viga ERROR 1698 (28000): Access denied, on root-kasutajal lubatud parooliga autentimine. Sel juhul kasutage:
mysql -u root -pAsendage 1.2.3.4 selle arvuti või serveri IP-aadressiga, millest ühenduse loote. Seejärel valige:
Looge kasutaja, kes saab ühenduse luua ainult määratud IP-lt:
CREATE USER 'kasutaja'@'1.2.3.4' IDENTIFIED BY 'parool';Lubage olemasoleval kasutajal localhosti asemel ühenduda määratud IP-lt:
RENAME USER 'kasutaja'@'localhost' TO 'kasutaja'@'1.2.3.4';Ärge kasutage %, kui see pole vajalikKui kirjutate IP asemel '%', saab kasutaja ühenduda kõikjalt. See on mugav, kuid automaatsed robotid üritavad pidevalt parooli ära arvata.
-
Andke õigused
Andke kasutajale õigused ainult sellele andmebaasile, mida ta vajab:
GRANT ALL PRIVILEGES ON andmebaas.* TO 'kasutaja'@'1.2.3.4';Väljuge MySQL-i konsoolist. Pärast GRANT-käsku pole FLUSH PRIVILEGES vaja käivitada.
exit -
Avage tulemüüris port 3306
Kui serveris töötab UFW tulemüür, avage MySQL-i port ainult oma IP-aadressile:
sudo ufw allow from 1.2.3.4 to any port 3306Ärge avage porti kõigileKäsk sudo ufw allow 3306 avab andmebaasi kogu internetile. Määrake alati konkreetne IP.
Kas õnnestus?
Sisestage arvutis, millest ühenduse loote, see käsk, asendades serveri_ip oma VPS-serveri IP-aadressiga:
mysql -u kasutaja -h serveri_ip -pKui pärast parooli sisestamist avaneb MySQL-i konsool, kaugjuurdepääs töötab. Selles arvutis peab olema paigaldatud MySQL-i klient.
Korduma kippuvad küsimused
Viga „ERROR 2003: Can’t connect to MySQL server“
Server ei võta ühendust vastu. Kontrollige, kas muutsite bind-address, taaskäivitasite teenuse ja avasite pordi 3306 oma IP-le.
Viga „Host ... is not allowed to connect“
Kasutaja on loodud teisele IP-aadressile. Kontrollige käsuga SELECT user, host FROM mysql.user; ja veenduge, et host-veerus oleks teie IP.
Ühendus ei tööta PHP või phpMyAdminiga
Väga vanad PHP versioonid ei toeta vaikimisi meetodit caching_sha2_password. Parim lahendus on PHP uuendamine. mysql_native_password on MySQL 8.4-s keelatud ja 9.0-s eemaldatud.
Kas on turvalisem viis?
Jah, SSH-tunnel. Siis pole vaja muuta bind-address ega porti avada: ssh -L 3306:127.0.0.1:3306 [email protected]. Seejärel looge ühendus oma arvutis aadressiga 127.0.0.1.
Mis edasi
Kui tekib raskusi, kirjutage meile reaalajas vestluses või e-postiga.