Serwer MySQL na Raspberry (Linuxie)

MySQL jest najpopularniejszym systemem do zarządzania relacyjną bazą danych o otwartym kodzie źródłowym. Jest to dobre i sprawdzone rozwiązanie do przechowywania danych, które doskonale sprawdza się i w prostych, i w bardziej zaawansowanych aplikacjach. jego najważniejszą cechą jest dążenie do szybkości ponad kompatybilności ze standardem SQL, przez co MySQL może być częściowo ograniczony pod względem funkcjonalności. Przykładowo, dopiero w piątej wersji dodano takie rzeczy jak procedury składowane, wyzwalacze (tzw. triggery), widoki czy kursory – czyli rzeczy, które w bazach MsSQL czy PostgreSQL są standardem już od dawna. Obecnie jednak nie brakuje mu już wiele do konkurencyjnych rozwiązań, za to jest od nich prostszy i bardziej kompatybilny. Na łamach bloga będę starał się poruszać tematy nawiązujące do tejże bazy, ponieważ niezbyt duże wymogi odnośnie platformy pozwalają uruchomić bazę na Raspberry. W tym wpisie opisze instrukcje instalacji forka MariaDB i przykładowe tworzenia bazy.

Instalacja

Instalacja jest typowa. Najpierw, jak zawsze, aktualizujemy listę paczek.

sudo apt-get update

Po czym instalujemy właściwy moduł.

sudo apt install mariadb-server

Konfiguracja

Następnie należy zaktualizować opcje zabezpieczeń. Domyślnie, dostęp do serwera jest możliwy bez konieczności podania jakiegokolwiek hasła. Należy to zmienić, pozostawienie niezabezpieczonego dostępu jest zdecydowanie złą praktyką. W tym celu należy wykonać następujące polecenie:

sudo mysql_secure_installation

Postępuj zgodnie z poleceniami instalatora. Jeżeli nie rozumiesz, o czym jest pytanie, wciśnij enter, aby wybrać wartość zalecaną. Głównym celem tych pytań jest odebranie nieuprawnionego dostępu do serwera. W jednym z pytań zostaniesz poproszony o nadanie hasła dla użytkownika root, pamiętaj je zapamiętać (albo zapisać), bo będzie nam ono potrzebne później.

Sprawdźmy, czy konfiguracja przebiegła pomyślnie. W tym celu uruchomimy linię poleceń serwera MySQL. Wpisz w konsoli następujące polecenie i potwierdź hasłem, które wcześniej ustawiłeś (hasło będzie niewidoczne podczas wpisywania).

sudo mysql -u root -p

Jeżeli wszystko przebiegło pomyślnie, ujrzysz konsolę serwera MySQL taka jak na obrazku poniżej.

Aby upuścić konsolę, wpisz „quit;” lub „exit” albo po prostu wciśnij kombinację klawiszy CTRL+D.

Dodanie bazy i użytkownika

Teraz gdy już mamy wszystko skonfigurowane, dodajmy nową bazę danych i użytkownika. Wpierw otwórzmy konsolę serwera, tak jak to zrobiliśmy w poprzednim kroku.

sudo mysql -u root -p

Teraz stwórzmy nową bazę o nazwie „CleverBlogDatabase”.

CREATE DATABASE CleverBlogDatabase;

Teraz dodajmy nowego użytkownika o nazwie „CleverUser” z hasłem „CleverPassword”.

CREATE USER 'CleverUser'@'localhost' IDENTIFIED BY 'CleverPassword';

Kolejnym krokiem jest nadanie użytkownikowi uprawnień do bazy danych. Jest to konieczne, aby mógł on dokonywać w niej zmian, wprowadzać zmiany, manipulować tabelami itp.

GRANT ALL PRIVILEGES ON CleverBlogDatabase.* TO 'CleverUser'@'localhost';

Ostatnim krokiem jest zapisanie dokonanych zmian poleceniem „FLUSH”. Bez tej operacji nowoutworzony użytkownik nie uzyska uprawnień do bazy, które mu nadaliśmy.

FLUSH PRIVILEGES;

Dostęp zdalny

Aby uzyskać dostęp do bazy z innego komputera w sieci, musisz dokonać zmian w konfiguracji, opisane w tym artykule na blogu. Do przeglądania baz danych polecam program „MySQL Workbench” – jest dostępny za darmo na stronie producenta.

Drugim sposobem jest integracja narzędzia phpMyAdmin, które służy do zarządzania serwerem baz danych MySQL poprzez interfejs webowy. Wymaga on instalacji PHP na Raspberry. Być może opiszę to kiedyś na łamach bloga, na razie pozostaje Ci, drogi czytelniku, poszukać innych tutoriali w internecie.

Integracja

Aby baza działała z konkretnymi językami programowania, będziesz potrzebował rozszerzeń, które zapewnią integrację z nimi.

Aby zintegrować z jęzukiem PHP, zainstaluj

sudo apt install php-mysql

Aby zintegrować z językiem Python w wersji 2, zainstaluj

sudo pip install mysql-connector-python

Aby zintegrować z językiem Python w wersji 3, zainstaluj

sudo pip3 install mysql-connector-python

Aby zintegrować z językiem C#, nie potrzebujesz nic instalować w systemie, musisz za to dodać odpowiedni provider w swoim projekcie. Do wykorzystania w ADO.NET zainstaluj paczkę nugetową „MySql.Data”, a do wykorzystania w Entity Framework Core – „Pomelo.EntityFrameworkCore.MySql”.