Wyszukiwanie w witrynie

Jak zmienić domyślny port MySQL/MariaDB w systemie Linux


W tym przewodniku dowiemy się, jak zmienić domyślny port, z którym łączy się baza danych MySQL/MariaDB w dystrybucjach Linuksa opartych na CentOS 7 i Debianie. Domyślny port, na którym działa serwer bazy danych MySQL w systemie Linux i Unix, to 3306/TCP.

Aby zmienić domyślny port bazy danych MySQL/MariaDB w systemie Linux, otwórz plik konfiguracyjny serwera MySQL do edycji wydając poniższe polecenie.

vi /etc/my.cnf.d/server.cnf                   [On CentOS/RHEL]
vi /etc/mysql/mariadb.conf.d/50-server.cnf    [On Debian/Ubuntu] 

Wyszukaj statystyki linii rozpoczynające się od [mysqld] i umieść następującą dyrektywę portu w instrukcji [mysqld], jak pokazano w poniższych fragmentach plików. Zmień odpowiednio zmienną portu.

[mysqld] 
port = 12345

Po dodaniu nowego portu MySQL/MariaDB zapisz i zamknij plik konfiguracyjny i zainstaluj następujący pakiet pod CentOS 7, aby zastosować wymagany SELinux reguły zezwalające bazie danych na powiązanie z nowym portem.

yum install policycoreutils-python

Następnie dodaj poniższą regułę SELinux, aby powiązać gniazdo MySQL na nowym porcie i zrestartuj demona bazy danych, aby zastosować zmiany, wydając poniższe polecenia. Ponownie zamień zmienną portu MySQL, aby pasowała do własnego numeru portu.

--------------- On CentOS/RHEL --------------- 
semanage port -a -t mysqld_port_t -p tcp 12345
systemctl restart mariadb

--------------- On Debian/Ubuntu ---------------
systemctl restart mysql      [On Debian/Ubuntu]  

Aby sprawdzić, czy konfiguracja portu dla serwera bazy danych MySQL/MariaDB została pomyślnie zastosowana, wydaj polecenie netstat lub ss i przefiltruj wyniki za pomocą polecenia grep, aby łatwo zidentyfikować nowy port MySQL.

ss -tlpn | grep mysql
netstat -tlpn | grep mysql

Możesz także wyświetlić nowy port MySQL, logując się do bazy danych MySQL przy użyciu konta root i wydając poniższe polecenie. Należy jednak pamiętać, że wszystkie połączenia z MySQL na hoście lokalnym są nawiązywane przez gniazdo domeny unixowej MySQL, a nie przez gniazdo TCP. Jednak numer portu TCP musi być jawnie określony w przypadku zdalnych połączeń wiersza poleceń z bazą danych MySQL przy użyciu flagi -P.

mysql -h localhost -u root -p -P 12345
MariaDB [(none)]> show variables like 'port';

W przypadku zdalnego połączenia z bazą danych MySQL użytkownik root musi być jawnie skonfigurowany tak, aby zezwalał na połączenia przychodzące ze wszystkich sieci lub tylko z adresu IP, wydając poniższe polecenie w konsoli MySQL:

mysql -u root -p
MariaDB [(none)]> grant all privileges on *.* to 'root'@'192.168.1.159' identified by 'strongpass';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

Zaloguj się zdalnie do serwera MySQL za pomocą klienta wiersza poleceń na nowym porcie, wydając poniższe polecenie.

mysql -h 192.168.1.159 -P 12345 -u root -p  

Na koniec, po zmianie portu serwera bazy danych MySQL/MariaDB, musisz zaktualizować reguły zapory sieciowej dystrybucji, aby zezwalać na połączenia przychodzące do nowego portu TCP, aby zdalni klienci mogli pomyślnie łączyć się z bazą danych.