Atpakaļ Atpakaļ

Kā atļaut attālinātu piekļuvi MySQL

Pēc noklusējuma MySQL pieņem tikai lokālus savienojumus no paša servera. Šajā pamācībā atļausiet pieslēgties datubāzei no cita datora vai lietotnes, piemēram, vietnes vai spēļu servera.

Kas būs nepieciešams pirms sākšanas

  • VPS serveris ar Linux un instalētu MySQL vai MariaDB.
  • Lietotājs ar sudo tiesībām.
  • Tā datora vai servera publiskā IP adrese, no kura pieslēgsieties.

Attālinātās piekļuves ieslēgšana

  1. Pieslēdzieties serverim caur SSH

    Pieslēdzieties savam VPS serverim caur SSH. Vairāk: Kā lietot PuTTY programmu.

  2. Mainiet bind-address iestatījumu

    Atveriet datubāzes konfigurācijas failu. Ceļš atkarīgs no tā, ko izmantojat:

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

    Nospiediet Ctrl + W un atrodiet bind-address. Pēc noklusējuma tas atļauj tikai lokālus savienojumus:

    bind-address = 127.0.0.1

    Mainiet vērtību, lai serveris pieņemtu ārējus savienojumus:

    bind-address = 0.0.0.0

    Ja failā nav bind-address rindas, pievienojiet to zem [mysqld] rindas.

    Kā saglabāt

    Ctrl + O un Enter saglabā failu, Ctrl + X iziet no redaktora.

  3. Pārstartējiet datubāzes pakalpojumu

    Lai izmaiņas stātos spēkā, pārstartējiet pakalpojumu:

    sudo systemctl restart mysql
  4. Sagatavojiet lietotāju attālinātai piekļuvei

    Atveriet MySQL konsoli:

    sudo mysql

    Ja redzat kļūdu ERROR 1698 (28000): Access denied, root lietotājam ieslēgta paroles autentifikācija. Tādā gadījumā izmantojiet:

    mysql -u root -p

    1.2.3.4 vietā ierakstiet tā datora vai servera IP adresi, no kura pieslēgsieties. Pēc tam izvēlieties:

    Izveidojiet lietotāju, kurš varēs pieslēgties tikai no norādītās IP:

    CREATE USER 'lietotajs'@'1.2.3.4' IDENTIFIED BY 'parole';
    Neizmantojiet %, ja nav nepieciešams

    IP adreses vietā ierakstot '%', lietotājs varēs pieslēgties no jebkuras vietas. Tas ir ērti, taču automatizēti boti nemitīgi mēģinās uzminēt paroli.

  5. Piešķiriet tiesības

    Piešķiriet lietotājam tiesības tikai tai datubāzei, kas tam nepieciešama:

    GRANT ALL PRIVILEGES ON datubaze.* TO 'lietotajs'@'1.2.3.4';

    Izejiet no MySQL konsoles. Pēc GRANT komandas FLUSH PRIVILEGES nav jāizpilda.

    exit
  6. Atveriet 3306 portu ugunsmūrī

    Ja serverī darbojas UFW ugunsmūris, atveriet MySQL portu tikai savai IP adresei:

    sudo ufw allow from 1.2.3.4 to any port 3306
    Neatveriet portu visiem

    Komanda sudo ufw allow 3306 atver datubāzi visam internetam. Vienmēr norādiet konkrētu IP.

Vai izdevās?

Datorā, no kura pieslēgsieties, ievadiet komandu, servera_ip vietā ierakstot VPS servera IP adresi:

mysql -u lietotajs -h servera_ip -p

Ja pēc paroles ievadīšanas atveras MySQL konsole, attālinātā piekļuve darbojas. Šajā datorā jābūt instalētam MySQL klientam.

Biežāk uzdotie jautājumi

Kļūda „ERROR 2003: Can’t connect to MySQL server”

Serveris nepieņem savienojumu. Pārbaudiet, vai nomainījāt bind-address, pārstartējāt pakalpojumu un atvērāt 3306 portu savai IP.

Kļūda „Host ... is not allowed to connect”

Lietotājs izveidots citai IP adresei. Pārbaudiet ar komandu SELECT user, host FROM mysql.user; un pārliecinieties, ka host kolonnā ir jūsu IP.

Savienojums nedarbojas ar PHP vai phpMyAdmin

Ļoti vecas PHP versijas neatbalsta noklusējuma caching_sha2_password metodi. Vislabāk atjaunināt PHP. mysql_native_password MySQL 8.4 versijā ir atspējots, bet 9.0 versijā noņemts.

Vai ir drošāks veids?

Jā, SSH tunelis. Tad bind-address nav jāmaina un ports nav jāatver: ssh -L 3306:127.0.0.1:3306 [email protected]. Pēc tam pieslēdzieties 127.0.0.1 savā datorā.

Kas tālāk

Ja rodas grūtības, rakstiet mums tiešsaistes atbalstā vai e-pastā.

Līdzīgas pamācības

VPS Pamācības