Instalacja bazy danych MySQL + phpMyAdmin na serwerze VPS / Dedyk
Spisu treści:
- Konfigurowanie serwera MySQL
- Udzielanie dostępu użytkownikowi z komputera zdalnego
- Konfigurowanie zapory ogniowej
- Iptables
- UFW
- FirewallD
- Weryfikacja zmian
- Wniosek
Domyślnie serwer MySQL nasłuchuje połączeń tylko z hosta lokalnego, co oznacza, że dostęp do niego mogą uzyskać tylko aplikacje działające na tym samym hoście.
Jednak w niektórych sytuacjach konieczne jest uzyskanie dostępu do serwera MySQL ze zdalnej lokalizacji. Na przykład, gdy chcesz połączyć się ze zdalnym serwerem MySQL z systemu lokalnego lub podczas korzystania z wdrożenia na wielu serwerach, na którym aplikacja działa na innym komputerze niż serwer bazy danych. Jedną z opcji byłoby uzyskanie dostępu do serwera MySQL przez tunel SSH, a drugą jest skonfigurowanie serwera MySQL do akceptowania połączeń zdalnych.
W tym przewodniku przeprowadzimy kroki niezbędne do umożliwienia zdalnego połączenia z serwerem MySQL. Te same instrukcje dotyczą MariaDB.
Konfigurowanie serwera MySQL
Pierwszym krokiem jest ustawienie serwera MySQL na nasłuchiwanie na określonym adresie IP lub na wszystkich adresach IP na komputerze.
Jeśli serwer MySQL i klienci mogą komunikować się ze sobą przez sieć prywatną, najlepszą opcją jest ustawienie serwera MySQL tak, aby nasłuchiwał tylko na prywatnym IP. W przeciwnym razie, jeśli chcesz połączyć się z serwerem za pośrednictwem sieci publicznej, ustaw serwer MySQL, aby nasłuchiwał na wszystkich adresach IP na komputerze.
Aby to zrobić, musisz edytować plik konfiguracyjny MySQL i dodać lub zmienić wartość opcji
bind-address
. Możesz ustawić pojedynczy adres IP i zakresy adresów IP. Jeśli adres to
0.0.0.0
, serwer MySQL akceptuje połączenia na wszystkich interfejsach hosta IPv4. Jeśli masz skonfigurowany IPv6 w swoim systemie, zamiast
0.0.0.0
użyj
::
.
Lokalizacja pliku konfiguracyjnego MySQL różni się w zależności od dystrybucji. W Ubuntu i Debianie plik znajduje się w
/etc/mysql/mysql.conf.d/mysqld.cnf
, natomiast w dystrybucjach opartych na Red
/etc/mysql/mysql.conf.d/mysqld.cnf
, takich jak CentOS, plik znajduje się w
/etc/my.cnf
.
Otwórz plik za pomocą edytora tekstu:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Wyszukaj wiersz rozpoczynający
bind-address
i ustaw jego wartość na adres IP, na którym serwer MySQL powinien nasłuchiwać.
Domyślnie wartość jest ustawiona na
127.0.0.1
(nasłuchuje tylko w localhost).
W tym przykładzie ustawimy serwer MySQL na nasłuchiwanie na wszystkich interfejsach IPv4, zmieniając wartość na
0.0.0.0
bind-address = 0.0.0.0 # skip-networking
Jeśli istnieje wiersz zawierający
skip-networking
, usuń go lub skomentuj, dodając
#
na początku wiersza.
W MySQL 8.0 i nowszych dyrektywa
bind-address
może nie być obecna. W takim przypadku dodaj go pod
Sekcja.
Po zakończeniu zrestartuj usługę MySQL, aby zmiany odniosły skutek. Tylko root lub użytkownicy z uprawnieniami sudo mogą restartować usługi.
Aby zrestartować usługę MySQL na Debianie lub Ubuntu, wpisz:
sudo systemctl restart mysql
W przypadku dystrybucji opartych na RedHat, takich jak CentOS, w celu ponownego uruchomienia usługi:
Udzielanie dostępu użytkownikowi z komputera zdalnego
Następnym krokiem jest umożliwienie dostępu do bazy danych zdalnemu użytkownikowi.
Zaloguj się do serwera MySQL jako użytkownik root, wpisując:
sudo mysql
mysql -uroot -p
Z poziomu powłoki MySQL użyj instrukcji
GRANT
, aby przyznać dostęp zdalnemu użytkownikowi.
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
Gdzie:
-
database_name
to nazwa bazy danych, z którą użytkownik się połączy.user_name
to nazwa użytkownika MySQL.ip_address
to adres IP, z którego użytkownik się połączy. Użyj%
aby zezwolić użytkownikowi na połączenie z dowolnego adresu IP.user_password
to hasło użytkownika.
Na przykład, aby przyznać dostęp do bazy danych
dbname
użytkownikowi o nazwie
foo
z hasłem
my_passwd
z komputera klienckiego o
10.8.0.5
IP
10.8.0.5
, należy uruchomić:
GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';
Konfigurowanie zapory ogniowej
Ostatnim krokiem jest skonfigurowanie zapory sieciowej, aby zezwalała na ruch na porcie
3306
(domyślny port MySQL) ze zdalnych komputerów.
Iptables
sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
Zezwól na dostęp z określonego adresu IP:
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW
UFW jest domyślnym narzędziem zapory sieciowej w Ubuntu. Aby zezwolić na dostęp z dowolnego adresu IP w Internecie (bardzo niepewny), uruchom:
sudo ufw allow 3306/tcp
Zezwól na dostęp z określonego adresu IP:
sudo ufw allow from 10.8.0.5 to any port 3306
FirewallD
FirewallD to domyślne narzędzie do zarządzania zaporą w CentOS. Aby zezwolić na dostęp z dowolnego adresu IP w Internecie (bardzo niepewny):
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
Aby zezwolić na dostęp z określonego adresu IP na określonym porcie, możesz utworzyć nową strefę FirewallD lub użyć rozszerzonej reguły.
mysqlzone
nową strefę o nazwie
mysqlzone
:
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
Weryfikacja zmian
Aby sprawdzić, czy użytkownik zdalny może połączyć się z serwerem MySQL, uruchom następujące polecenie:
mysql -u user_name -h mysql_server_ip -p
Gdzie
user_name
to nazwa użytkownika, któremu udzielono dostępu, a
mysql_server_ip
to adres IP hosta, na którym działa serwer MySQL.
Jeśli wszystko jest poprawnie skonfigurowane, będziesz mógł zalogować się do zdalnego serwera MySQL.
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
Poniższy błąd wskazuje, że użytkownik, którego próbujesz się zalogować, nie ma uprawnień dostępu do zdalnego serwera MySQL.
"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"
Wniosek
MySQL, domyślnie najpopularniejszy serwer bazy danych typu open source, nasłuchuje połączeń przychodzących tylko na hoście lokalnym.
Aby umożliwić zdalne połączenia z serwerem MySQL, musisz wykonać następujące kroki:
- Skonfiguruj serwer MySQL do nasłuchiwania na wszystkich lub na określonym interfejsie. Udziel dostępu zdalnemu użytkownikowi. Otwórz port MySQL w zaporze.
Błąd bazy danych Windows Update bazy danych wykryty w systemie Windows 10
Dowiedz się, jak naprawić potencjalny błąd bazy danych Windows Update Baza danych lub składniki usługi Windows Update muszą zostać naprawione po błędzie z uruchomionym narzędziem do rozwiązywania problemów.
Zdalne urządzenie lub zasób nie zaakceptuje połączenia
Jeśli otrzymasz Zdalne urządzenie lub zasób nie zaakceptuje błędu połączenia W systemie Windows 10/8/7 musisz zmienić ustawienia LAN, aby to naprawić.
Jak wykonać kopię zapasową i przywrócić bazy danych mysql za pomocą mysqldump
W tym samouczku wyjaśniono, jak wykonać kopię zapasową i przywrócić bazy danych MySQL lub MariaDB z wiersza polecenia za pomocą narzędzia mysqldump. Pliki kopii zapasowych utworzone przez narzędzie mysqldump są w zasadzie zestawem instrukcji SQL, których można użyć do odtworzenia oryginalnej bazy danych.