MySQL – dostęp zdalny na szybko

Instalacja serwera MySQL na Debianie jest niezwykle prosta i sprowadza się do jednego polecenia:

sudo apt-get install mysql-server

Polecenie to zainstaluje i uruchomi usługę serwerową MySQL. W czasie instalacji będziemy proszeni o podanie hasła dla root’a (które oczywiście dobrze jest zapamiętać bądź zapisać).

Tak zainstalowana baza nasłuchuje na lokalnym porcie (localhost:3306) umożliwiająć dostęp wyłącznie root’owi. Jest to bardzo bezpieczna konfiguracja… Ale jeśli nie mamy zamiaru na tej samej maszynie instalować oprogramowania zarządzającego to nie zawsze jest to wygodne, tym bardziej gdy przykładowo mamy działającego phpmyadmin’a na jakimś serwerze www. W takim przypadku pierwszą rzeczą, którą robię jest udostępnienie dostępu zdalnego dla root’a. Warto zaznaczyć że uprawnienia root’a można nadać dowolnemu użytkownikowi (np. romanowi) co jest dużo bezpieczniejszą konfiguracją niż działanie bezpośrednio na koncie root’a (którego nazwa jest powszechnie znana).

Dostęp zdalny dla root’a

Aby umożliwić zdalne zalogowanie się do bazy z uprawnieniami root’a trzeba ustawić odpowiednie GRANT’y, robimy to tak:

mysql -u root -p

mysql> GRANT ALL PRIVILEGES ON *.* TO 'roman'@'%'
> IDENTIFIED BY 'haslo dla zdalnego roota' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
mysql> exit

Pierwsze polecenie połączy nas z bazą prosząc o hasło podane w czasie instalacji.

Kolejne to polecenia SQL’owe, które pozwalają użytkownikowi ‘roman’ łączącemu się z hosta ‘%’ (dowolnego) identyfikującemu się hasłem ‘haslo dla zdalnego roota’. Jeżeli chcemy ograniczyć dostęp do tylko jednego zdalnego adresu to zamiast znaku procenta wpisujemy ten adres IP. Tak dodany użytkownik ma też prawo nadawania uprawnień (GRANT OPTION). Polecenie FLUSH PRIVILEGES przeładowuje uprawnienia – umożliwiając logowanie z podanymi wcześniej uprawnieniami.

Pozostało nam zmienić ustawienia serwera tak aby nasłuchiwał nie tylko na localhoście. W tym celu edytujemy plik /etc/mysql/my.cnf:

sudo vim /etc/mysql/my.cnf

Odszukujemy następującą linię:

bind-address = 127.0.0.1

Linię tę możemy zakomentować co będzie skutkować nasłuchiwaniem przez serwer na wszystkich skonfigurowanych adresach IP (taki sam efekt da wpisanie w polu adresu 0.0.0.0). Można też wpisać tylko jeden adres IP w przypadku gdy na serwerze jest ich kilka i nie chcemy aby serwer był dostępny na wszystkich.

Ostatnim krokiem jest zrestartowania serwera MySQL aby zadziałały wprowadzone w pliku konfiguracyjnym zmiany. Można to zrobić tak:

invoke-rc.d mysql restart

Jeżeli właśnie założyłeś i udostępniłeś nowy serwer bazodanowy MySQL to oszczędź sobie pracy w przyszłości i od razu ustaw przechowywanie tabel InnoDB w osobnych plikach.

One thought on “MySQL – dostęp zdalny na szybko”

  1. Witam, dziękuje za ten artykuł. Bardzo mi on pomógł. Od długiego czasu nie potrafiłem rozwiązać tego problemu a to było takie proste. Jak to mówi pewne przysłowie “Największym wrogiem człowieka jest niewiedza”. Pozdrawiam.

Leave a Reply

Your email address will not be published. Required fields are marked *