Grįžti atgal Grįžti atgal

Kaip leisti nuotolinę prieigą prie MySQL

Numatytai MySQL priima tik vietinius prisijungimus iš paties serverio. Šioje pamokoje leisite prie duomenų bazės jungtis iš kito kompiuterio ar programos, pvz. svetainės ar žaidimų serverio.

Ko reikės prieš pradedant

  • VPS serverio su Linux ir įdiegtu MySQL arba MariaDB.
  • Vartotojo su sudo teisėmis.
  • Kompiuterio ar serverio, iš kurio jungsitės, viešo IP adreso.

Nuotolinės prieigos įjungimas

  1. Prisijunkite prie serverio per SSH

    Prisijunkite prie savo VPS serverio per SSH. Plačiau: Kaip naudotis PuTTY programa.

  2. Pakeiskite bind-address nustatymą

    Atidarykite duomenų bazės konfigūracijos failą. Kelias priklauso nuo to, ką naudojate:

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

    Paspauskite Ctrl + W ir suraskite bind-address. Numatytai jis leidžia tik vietinius prisijungimus:

    bind-address = 127.0.0.1

    Pakeiskite reikšmę, kad serveris priimtų prisijungimus iš išorės:

    bind-address = 0.0.0.0

    Jei bind-address eilutės faile nėra, pridėkite ją po [mysqld] eilute.

    Kaip išsaugoti

    Ctrl + O ir Enter išsaugo failą, Ctrl + X išeina iš redaktoriaus.

  3. Perkraukite duomenų bazės tarnybą

    Kad pakeitimai įsigaliotų, perkraukite tarnybą:

    sudo systemctl restart mysql
  4. Paruoškite vartotoją nuotoliniam prisijungimui

    Atidarykite MySQL konsolę:

    sudo mysql

    Jei matote klaidą ERROR 1698 (28000): Access denied, root vartotojui įjungta slaptažodžio autentifikacija. Tokiu atveju naudokite:

    mysql -u root -p

    Vietoje 1.2.3.4 įrašykite kompiuterio ar serverio, iš kurio jungsitės, IP adresą. Tada pasirinkite:

    Sukurkite vartotoją, kuris galės prisijungti tik iš nurodyto IP:

    CREATE USER 'vartotojas'@'1.2.3.4' IDENTIFIED BY 'slaptazodis';
    Nenaudokite %, jei nebūtina

    Vietoje IP adreso įrašius '%', vartotojas galės jungtis iš bet kur. Tai patogu, bet serverį nuolat bandys atspėti automatiniai botai.

  5. Suteikite teises

    Suteikite vartotojui teises tik tai duomenų bazei, kurios jam reikia:

    GRANT ALL PRIVILEGES ON duomenu_baze.* TO 'vartotojas'@'1.2.3.4';

    Išeikite iš MySQL konsolės. FLUSH PRIVILEGES po GRANT komandos vykdyti nereikia.

    exit
  6. Atidarykite 3306 prievadą ugniasienėje

    Jei serveryje veikia UFW ugniasienė, atidarykite MySQL prievadą tik savo IP adresui:

    sudo ufw allow from 1.2.3.4 to any port 3306
    Neatidarykite prievado visiems

    Komanda sudo ufw allow 3306 atidaro duomenų bazę visam internetui. Visada nurodykite konkretų IP.

Ar pavyko?

Kompiuteryje, iš kurio jungsitės, įveskite komandą, vietoje serverio_ip įrašę VPS serverio IP adresą:

mysql -u vartotojas -h serverio_ip -p

Jei po slaptažodžio įvedimo atsidaro MySQL konsolė, nuotolinė prieiga veikia. Tame kompiuteryje turi būti įdiegtas MySQL klientas.

Dažni klausimai

Klaida „ERROR 2003: Can’t connect to MySQL server“

Serveris nepriima ryšio. Patikrinkite, ar pakeitėte bind-address, perkrovėte tarnybą ir atidarėte 3306 prievadą savo IP adresui.

Klaida „Host ... is not allowed to connect“

Vartotojas sukurtas kitam IP adresui. Patikrinkite komanda SELECT user, host FROM mysql.user; ir įsitikinkite, kad host stulpelyje yra jūsų IP.

Prisijungimas neveikia su PHP ar phpMyAdmin

Labai senos PHP versijos nepalaiko numatytojo caching_sha2_password metodo. Geriausia atnaujinti PHP. mysql_native_password MySQL 8.4 versijoje išjungtas, o 9.0 versijoje pašalintas.

Ar yra saugesnis būdas?

Taip, SSH tunelis. Tada bind-address keisti ir prievado atidaryti nereikia: ssh -L 3306:127.0.0.1:3306 [email protected]. Po to jungiatės prie 127.0.0.1 savo kompiuteryje.

Kas toliau

Jei kyla sunkumų, parašykite mums į gyvąją pagalbą arba el. paštu.

Panašios pamokos

VPS Pamokos