Który program należy zainstalować na serwerze internetowym z systemem Linux, aby można było korzystać z baz danych?
A. MySqld
B. sshd
C. httpd
D. vsftpd
Pytanie z egzaminu CKE, wrzesień 2015 (arkusz E.13-X-15.08).
Na serwerze internetowym z Linuksem do obsługi baz danych należy zainstalować usługę MySqld, czyli demon serwera MySQL. W praktyce na wielu dystrybucjach instaluje się pakiet mysql-server albo mariadb-server, a proces usługi może nazywać się mysqld. To właśnie ten program odpowiada za przechowywanie danych, obsługę zapytań SQL, tworzenie tabel, użytkowników, uprawnień i połączeń z aplikacjami WWW. Przykładowo strona napisana w PHP, Pythonie albo Javie może łączyć się z bazą MySQL, aby pobierać konta użytkowników, produkty w sklepie, wpisy bloga czy konfigurację systemu CMS, np. WordPressa. Z mojego doświadczenia warto pamiętać, że sam serwer WWW nie wystarczy do działania aplikacji dynamicznej. httpd wyświetli stronę, ale dane musi skądś dostać. Dobrą praktyką jest uruchamianie bazy jako osobnej usługi systemowej, kontrolowanej przez systemd, np. systemctl status mysqld lub systemctl status mariadb. Trzeba też ustawić hasła, ograniczyć zdalny dostęp, nadać minimalne uprawnienia użytkownikom bazy i regularnie robić kopie zapasowe. W branży często spotyka się stos LAMP: Linux, Apache, MySQL/MariaDB i PHP. W tym zestawie za bazę danych odpowiada właśnie MySQL/MariaDB, a nie usługa SSH, FTP czy sam serwer HTTP.
W tym pytaniu łatwo pomylić różne usługi serwerowe, bo wszystkie mogą działać na Linuksie i często występują na tym samym komputerze. sshd to demon SSH, czyli usługa służąca do bezpiecznego zdalnego logowania do systemu i wykonywania poleceń w terminalu. Jest bardzo ważna w administracji, ale nie przechowuje danych aplikacji w tabelach ani nie wykonuje zapytań SQL. httpd to najczęściej serwer WWW, np. Apache HTTP Server. Jego zadaniem jest obsługa żądań HTTP i HTTPS, wysyłanie stron HTML, plików CSS, obrazków albo przekazywanie zapytań do PHP czy innego backendu. Sam httpd nie jest jednak silnikiem bazy danych, tylko warstwą komunikacji webowej. vsftpd z kolei jest serwerem FTP, używanym do przesyłania plików. Może przydać się do wrzucania danych na hosting, ale nie zastępuje relacyjnej bazy danych. Typowy błąd myślowy polega na uznaniu, że skoro program działa na serwerze internetowym, to automatycznie obsługuje całą aplikację. W praktyce usługi mają konkretne role: HTTP publikuje stronę, SSH daje administrację, FTP przenosi pliki, a MySqld, czyli demon MySQL, udostępnia mechanizm bazy danych. Przy konfiguracji produkcyjnej warto rozdzielać te funkcje i pilnować bezpieczeństwa: nie wystawiać bazy bez potrzeby do Internetu, tworzyć osobnych użytkowników SQL, stosować kopie zapasowe oraz aktualizacje pakietów. Moim zdaniem to jedno z podstawowych rozróżnień w administracji Linuksem, a bardzo często wychodzi dopiero przy instalacji CMS-a albo sklepu internetowego.