Apache2, a baza danych oparta na MySQL/MariaDB

Jakiś czas temu doszło do „rozdzielenia się” MySQL, developerzy, którzy nie zgadzali się z polityką firmy stworzyli swój projekt MariaDB, który z tego co wiem jest bardzo kompatybilny z jego „oryginałem”. Nazwy plików, konfiguracji, zasobów – wszystko się pokrywa, także z tym rozłamem społeczność Linux-owa przeniosła się na korzystanie z MariaDB oraz zastąpienie paczek mysql na mariadb, dlatego chcą zainstalować MySQL trzeba go pobrać z oficjalnej strony. Jako, że oba moim zdaniem są wymienne, zainstalujmy produkt milej widziany przez społeczność Linux-ową, który można aktualizować bezpośrednio z poziomy systemu (oficjalne repozytorium).

1.Instalacja bazy danych i modułu dla PHP (jeżeli wcześniej nie zainstalowano)

apt-get install mariadb-server php-mysql

2. Zabezpieczenie bazy danych

mysql_secure_installation

# Enter current password for root (enter for none): <- wprowadź hasło root dla bazy danych (nie ustawialiśmy takowego podczas instalacji)
Enter 
# Set root password? [Y/n] <- Czy ustawić hasło root-a
Y
# Remove anonymous users? [Y/n] <- Czy usunąć anonimowego użytkownika
Y
# Disallow root login remotely? [Y/n] <- Czy zabronić zdalnego połączenia dla root-a
Y
# Remove test database and access to it? [Y/n] <- Czy usunąć bazę testową
Y
# Reload privilege tables now? [Y/n] <- Czy przeładować uprawnienia
Y

3. Konfiguracja serwera

printf "[mysqld]\n" > /etc/mysql/mariadb.conf.d/99-my-server.cnf

# jeżeli potrzebujemy dostępu z zewnątrz nadpiszmy bind-address = 127.0.0.1
printf "bind-address = 0.0.0.0 \n" >> /etc/mysql/mariadb.conf.d/99-my-server.cnf

# jeżeli chcemy zmienić port na jakim nasłuchuje baza danych
printf "port = 3335 \n" >> /etc/mysql/mariadb.conf.d/99-my-server.cnf

# na koniec
systemctl restart mariadb

4. Przetestujmy czy można połączyć się do naszej bazy lokalnie za pomocą root-a

mysqladmin -u root -p version

5. Dodajmy bazę danych

 mysqladmin -p create nazwa_bazy

6. Dodanie użytkowników i tabel

mysql -p -u root

# dla użytkownika łączącego się tylko lokalnie (z serwera)
CREATE USER 'nazwa_użytkownika'@'localhost' IDENTIFIED BY 'nasze_hasło';
GRANT ALL ON nazwa_bazy.* TO 'nazwa_użytkownika'@'localhost';
FLUSH PRIVILEGES;

# dla użytkownika łączącego się z konkretnego ip (najlepiej stałego)
CREATE USER 'nazwa_użytkownika'@'adres_ip' IDENTIFIED BY 'nasze_hasło';
GRANT ALL ON nazwa_bazy.* TO 'nazwa_użytkownika'@'adres_ip';
FLUSH PRIVILEGES;

# dla użytkownika łączącego się z różnych miejsce (dynamiczne ip)
CREATE USER 'nazwa_użytkownika'@'%' IDENTIFIED BY 'nasze_hasło';
GRANT ALL ON nazwa_bazy.* TO 'nazwa_użytkownika'@'%';
FLUSH PRIVILEGES;

7. Jeżeli skonfigurowaliśmy bazę jako dostępną z zewnątrz (punkt 3) należy przepuścić go przez firewall

ufw allow nasz_port_mariadb/tcp
ufw reload

8. Możemy teraz przetestować czy nasz serwer faktycznie jest dostępy (z zewnątrz lub nie). Można to zrobić za pomocą MySQL Workbench lub bardzo leciutkiego HeidiSQL, lub na Linuxie za pomocą komendy mysql -u <użytkownik> -p <nazwa_bazy>

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*