Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wdrożyć MySQL na Ubuntu i w pełni zarządzany?

W tym poście na blogu pokażemy Ci krok po kroku, jak zainstalować i skonfigurować serwer MySQL zarówno ręcznie w systemie operacyjnym Ubuntu 20.04, jak i przy użyciu usługi zarządzanej bazy danych ScaleGrid. W kolejnych sekcjach tego samouczka pomożemy Ci na każdym kroku, aby pomyślnie skonfigurować własny serwer MySQL i poprawnie go skonfigurować.

Trochę o MySQL i Ubuntu

MySQL to system zarządzania relacyjnymi bazami danych o otwartym kodzie źródłowym (DBMS). Działa na serwerach Windows i Linux i jest powszechnie instalowany jako część stosu LAMP (Linux, Apache, MySQL, PHP/Python/Perl) lub stosu LEMP (Linux, Nginx, MySQL, PHP). Jest to trafny wybór, jeśli wiesz, że po prostu potrzebujesz bazy danych, ponieważ jest to szybki, prosty i skalowalny system oparty na SQL i jest uważany za najpopularniejszy system zarządzania relacyjnymi bazami danych.

Podczas gdy Ubuntu jest jednym z najpopularniejszych na świecie systemów operacyjnych typu open source dla komputerów stacjonarnych, Ubuntu 20.04 zapewnia stabilność, odporność i jeszcze lepsze zabezpieczenia w opłacalnym modelu klasy korporacyjnej.

Jak zainstalować MySQL na Ubuntu 20.04

Zanim przejdziemy do procesu instalacji serwera MySQL na Ubuntu, pamiętaj o następujących wymaganiach wstępnych:

  • Serwer Ubuntu 20.04 z administratorem innym niż root lub użytkownikiem sudo do wykonywania autorytatywnych kroków i zaporą sieciową skonfigurowaną z UFW
  • System należy zaktualizować za pomocą:
    • sudo apt update
    • sudo apt upgrade -y
  • Stałe połączenie sieciowe

Nowa instalacja MySQL na Ubuntu 20.04

Zainstaluj MySQL

Aby zainstalować MySQL na Ubuntu 20.04, można wykonać proste polecenie (apt install mysql server), ponieważ pakiet instalacyjny jest częścią oficjalnego repozytorium Ubuntu 20.04.

apt install mysql-server -y

Zabezpieczenie instalacji serwera MySQL

Serwer MySQL ma gotowy skrypt do bezpiecznej instalacji. Powszechną praktyką, aby uczynić tę instalację bezpieczną, jest uruchomienie tego skryptu po poleceniu instalacji. Pozwala użytkownikowi ustawić hasło roota dla MySQL, wyłączyć dostęp do konta root spoza lokalnego hosta, usunąć anonimowe konta użytkowników, a także usunąć testową bazę danych, do której mogą mieć dostęp anonimowi użytkownicy. Ten skrypt można wywołać za pomocą tego sudo polecenie:

sudo mysql_secure_installation

Po uruchomieniu skryptu bezpiecznej instalacji pojawia się seria monitów. Pierwszym monitem jest ustawienie VALIDATE PASSWORD COMPONENT . Ten monit (jeśli jest zaznaczony) przeprowadzi walidację po utworzeniu hasła użytkownika. Pozwoli ci to utworzyć hasło tylko wtedy, gdy jest ono zgodne ze standardami haseł w MySQL.

Ustawianie hasła roota

Poniższy monit dotyczy ustawienia hasła dla roota. Użytkownik powinien ustawić to hasło. Odpowiedz na wszystkie kolejne monity „Tak”, ponieważ jest to najlepsza praktyka z punktu widzenia bezpieczeństwa.

Konfigurowanie SSL dla instalacji serwera MySQL

Czasami po zainstalowaniu MySQL serwer bazy danych jest konfigurowany na oddzielnej maszynie fizycznej w tej samej lub innej sieci. Aby komunikować się z taką bazą danych, komunikacja musi być zabezpieczona i zaszyfrowana. Dlatego certyfikaty SSL muszą być zainstalowane i włączone na serwerze bazy danych. Protokół SSL wykorzystuje parę kluczy do uwierzytelniania, zabezpieczania i zarządzania bezpiecznymi połączeniami. Użyj następującego polecenia, aby wygenerować klucze SSL:

sudo mysql_ssl_rsa_setup --uid=mysql

Ich domyślny katalog zawiera te klucze i możesz je znaleźć, wywołując następujące polecenie:

sudo sudo find /var/lib/mysql -name '*.pem' -ls

mysql> \s

Wywołując powyższe polecenie z poziomu wiersza poleceń SQL, możesz potwierdzić, że protokół SSL jest aktywny, wyszukując wiersz z napisem SSL: Cipher in use is […] , jak widać na poniższym obrazku.

Zabezpieczenie bazy danych

Bezpieczeństwo bazy danych jest jednym z najważniejszych elementów, które należy wziąć pod uwagę przy planowaniu instalacji MySQL. Atakujący zawsze szukają sposobów na uzyskanie dostępu do systemów baz danych tylnymi drzwiami i uzyskanie informacji poufnych na temat celu. Zmiana domyślnego portu to prosty sposób na zwiększenie bezpieczeństwa bazy danych. Można to zmienić w pliku konfiguracyjnym w /etc/mysql/mysql.conf.d/mysqld.cnf .

Utwórz użytkownika i bazę danych MySQL

Za pomocą tego prostego polecenia możesz utworzyć konto użytkownika bazy danych MySQL wraz z jego hasłem:

CREATE USER 'Username' @ 'localhost'  IDENTIFIED BY 'StrongPassword';

Pole localhost w CREATE USER polecenie wskazuje, że użytkownik połączy się z tego samego serwera. Można go zastąpić adresem IP, jeśli chcesz połączyć się z komputera o określonym adresie IP, lub można go zastąpić znakiem procentowym % jeśli użytkownik chce uzyskać dostęp do bazy danych z dowolnego miejsca.

Jeśli chcesz tylko utworzyć bazę danych, możesz ją utworzyć za pomocą następującego polecenia:

CREATE DATABASE databasename;

Po utworzeniu użytkownika i bazy danych użytkownik otrzyma wymagane uprawnienia do bazy danych.

Uprawnienia mogą być dowolnego typu; na przykład CREATE , ALTER , INSERT , UPDATE , DELETE , SELECT , RELOAD itp. Zazwyczaj właściciel bazy danych potrzebuje wszystkich uprawnień, a uprawnienia te można przypisać niezależnie użytkownikowi. Wszystkie te uprawnienia można przyznać jednocześnie za pomocą polecenia.

GRANT ALL PRIVILEGES ON databasename.tablename TO 'username' @ 'localhost';

Ponownie słowo kluczowe localhost można zastąpić adresem IP lub % znak, jeśli użytkownik zamierza połączyć się z określonego adresu IP lub innego źródła.

Uprawnienia dla użytkownika można zobaczyć za pomocą polecenia SHOW GRANTS

SHOW GRANTS for 'databaseuser'@'localhost';

Wszystkie uprawnienia można odebrać użytkownikowi za pomocą polecenia:

REVOKE ALL PRIVILEGES ON database.name.* FROM 'database.user'@'localhost';

Tutaj możesz zobaczyć, że po uruchomieniu REVOKE polecenie, nie ma uprawnień dla użytkownika jason .

Tworzenie i usuwanie tabel

Dodawanie lub usuwanie tabel z bazy danych jest łatwe. Wszystko, co musisz zrobić, to użyć jednego z następujących poleceń:

DROP TABLE databasename.tablename

CREATE TABLE databasename.tablename ( column1 datatype,column2 datatype ,column3 datatype);

Parametr kolumny określa nazwę, podczas gdy parametr datatype określa typ danych, które zawiera kolumna.

Czasami trzeba dodać klucz podstawowy do kolumny. Klucz podstawowy pozwala jednoznacznie zidentyfikować każdy wpis w tabeli. Można to zrobić, wspominając o tym w CREATE TABLE Komenda. Poniższy przykład tworzy kolumnę user_id z kluczem podstawowym, który jest automatycznie zwiększany. Pamiętaj, że klucz podstawowy musi zawierać unikalne wartości i nie może zawierać wartości pustych

Dodaj lub usuń kolumny w tabeli

Kolumny można również dodawać lub usuwać z określonej tabeli bazy danych po jej utworzeniu.

Aby to zrobić, zmień bazę danych, którą chcesz zmienić, używając use database_name polecenie.

Następnie następujące polecenia dodadzą i upuszczą kolumnę:

ALTER TABLE tablename ADD columnname datatype;
ALTER TABLE tablename DROP columnname;

Wstaw dane do tabeli

Wstaw dane do tabeli za pomocą następującego polecenia:

INSERT INTO tablename (column1,column2,column3) VALUES ('value1','value2','value3' );

Będziesz musiał określić nazwy kolumn i wartość, która ma być wstawiona do każdej kolumny w kolejności. Jeśli chcesz wstawić wartości do każdej kolumny tabeli, możesz po prostu pominąć kolumny i rozpocząć określanie wartości bezpośrednio po nazwie tabeli:

INSERT INTO tablename VALUES ('value1','value2','value3' );

Update Data in a Table

Użyj następującego polecenia, aby zaktualizować dane w tabeli:

UPDATE tablename SET columnname= 'newvalue'  WHERE columnname='value'

WHERE warunek mówi, w którym wierszu dane mają zostać zaktualizowane. Jeśli warunek nie jest określony, dane są aktualizowane we wszystkich wierszach określonej kolumny.

Wybierz dane z tabeli

Aby wybrać i wyświetlić dane z poszczególnych kolumn w tabeli, użyj następującego polecenia:

SELECT column1,column2 FROM tablename;

Jednak, aby wybrać wszystkie kolumny z tabeli, użyj polecenia:

SELECT * FROM tablename;

Włącz rejestrowanie binarne

Włączenie rejestrowania binarnego na serwerze bazy danych MySQL umożliwia rejestrowanie zapytań, które dokonały zmian w bazie danych. Rejestrowanie binarne jest przydatną funkcją, którą można włączyć, jeśli na przykład musisz rozwiązać problem spowodowany zapytaniem w bazie danych.

Aby włączyć logowanie binarne, dodaj następujący wiersz w pliku konfiguracyjnym w /etc/mysql/mysql.conf.d/mysqld.cnf .

log-bin=mysql-bin.log

Aby potwierdzić, czy logowanie binarne jest aktywne, wywołaj następujące polecenie z powłoki MySQL:

show variables like  '% log_bin%'

Domyślnie binarne pliki dziennika są przechowywane w /var/lib/mysql katalog w większości dystrybucji Linuksa, w tym Ubuntu.

Skonfiguruj prostą replikację asynchroniczną

MySQL obsługuje replikację, co przydaje się podczas planowania odzyskiwania po awarii i upewniania się, że minimalizujesz potencjalne przestoje. MySQL obsługuje dwa typy replikacji:

  • Replikacja półsynchroniczna
  • Replikacja asynchroniczna

W przypadku replikacji półsynchronicznej, gdy źródło zatwierdzi transakcję, wszystkie repliki również zatwierdzą transakcję, zanim źródło powróci do sesji, która wykonała transakcję. Minusem jest to, że powoduje to duże opóźnienie w realizacji transakcji z powodu wyżej wymienionego systemu transakcyjnego.

Natomiast w przypadku replikacji asynchronicznej źródło zapisuje zdarzenia w swoim dzienniku binarnym, a repliki żądają ich, gdy są gotowe. Nie ma jednak gwarancji, że jakiekolwiek wydarzenie kiedykolwiek dotrze do jakiejkolwiek repliki.

Domyślnie MySQL ma włączoną replikację asynchroniczną ze względu na krótki czas przetwarzania. Jednak główną wadą jest to, że jeśli źródłowa baza danych ulegnie awarii, nie ma możliwości pobrania danych, które nie zakończyły transakcji, do replik DB. Z drugiej strony tryb replikacji półsynchronicznej koncentruje się bardziej na dostępności i trwałości danych, ale jest bardzo powolny. Wybór trybu replikacji zależy wyłącznie od specyficznych potrzeb użytkownika związanych z konfiguracją bazy danych.

Wewnątrz pliku my.cnf dla serwera źródłowego i serwera repliki możesz zapisać identyfikatory serwerów odpowiednio jako:

server_id=1
server_id=2

Na serwerze źródłowym można utworzyć dedykowanego użytkownika MySQL, który będzie używany przez replikę do łączenia się z serwerem źródłowym.

GRANT REPLICATION SLAVE ON *.* TO ‘masterusername’ @ 'ipaddress of slave server'
→ IDENTIFIED BY ‘masterpassword’;

Proces replikacji na serwerze replik można rozpocząć:

mysql> CHANGE MASTER TO
-> MASTER_HOST='ip address',
-> MASTER_PORT=port number,
-> MASTER_USER='username',
-> MASTER_PASSWORD='password',
-> MASTER_LOG_FILE='',
-> MASTER_LOG_POS=4;
mysql> start slave;

Te instrukcje rozpoczną tworzenie serwera repliki jako kopii serwera źródłowego.

Utwórz kopię zapasową/przywróć bazę danych MySQL

Utrzymywanie kopii zapasowej bazy danych jest zawsze dobrym pomysłem, nigdy nie wiesz, kiedy możesz jej potrzebować, aby upewnić się, że krytyczne dane nie zostaną utracone. Aby wykonać kopię zapasową bazy danych dla MySQL w systemie Ubuntu, po prostu wykonaj następujące polecenie mysqldump polecenie:

sudo mysqldump -u root -p <database.name> > <filename.sql>

Aby przywrócić usuniętą bazę danych, najpierw tworzona jest baza danych o tej samej nazwie w MySQL. Baza danych jest następnie przywracana poleceniem:

sudo mysql -u root -p <database.name> < <filename.sql>

Poniższy zrzut ekranu najpierw usuwa naszą bazę danych test_database, a następnie odtwarza ją i próbuje przywrócić wszystkie dane z utworzonej wcześniej kopii zapasowej. Importowanie danych można również wykonać, wykonując ten sam proces.

Koniec z instalacją MySQL na Ubuntu

Pomyślnie wykonałeś podstawowe kroki, aby zainstalować MySQL na Ubuntu 20.04. Po zakończeniu instalacji będziesz mieć operacyjną relacyjną bazę danych, której możesz użyć do zbudowania następnej aplikacji lub strony internetowej.

Jeśli wolisz, aby cały proces był zautomatyzowany i zarządzany przez ekspertów, zapoznaj się z następną częścią tego przewodnika.

Korzystanie ze ScaleGrid do konfiguracji wdrożenia DigitalOcean MySQL

W tej części przewodnika używamy naszego w pełni zarządzanego rozwiązania hostingowego MySQL, ponieważ oferuje ono najwyższą przepustowość i najmniejsze opóźnienia w DigitalOcean. Dowiedz się więcej w artykule Best MySQL DigitalOcean Performance, aby porównać ceny, opóźnienia i przepustowość usług ScaleGrid i DigitalOcean Managed Databases.

Cały proces powinien zająć mniej niż 20 minut, z zaledwie kilkoma minutami na początku na dostosowanie konfiguracji wdrożenia MySQL i kilkoma minutami na końcu, aby połączyć się z aplikacją .

Po zarejestrowaniu bezpłatnego konta próbnego, pierwszą rzeczą, którą zrobisz, jest wybranie MySQL jako bazy danych, DigitalOcean jako chmury i hostingu dedykowanego jako planu zainicjowania proces tworzenia klastra:

Krok 1. Wprowadź szczegóły wdrożenia MySQL

Kreator tworzenia klastra otworzy się do pierwszego kroku, w którym można dostosować podstawowe szczegóły wdrożenia. Wprowadź nazwę swojego klastra za pomocą znaków alfanumerycznych i użyj unikalnej, opisowej nazwy, aby móc później łatwo rozpoznać swój klaster.

Następnie wybierz centrum danych DigitalOcean, którego chcesz użyć dla swojego głównego serwera z menu rozwijanego regionu chmury – zalecamy używanie tego samego regionu, co Twoje aplikacje DigitalOcean Droplets, aby uzyskać najlepsze rezultaty występ. Następnie możesz wybrać rozmiar maszyny wirtualnej instancji DigitalOcean Droplet oraz wersję MySQL, której chcesz użyć (obsługiwane są wszystkie główne wersje). InnoDB Storage Engine jest domyślny dla wszystkich wdrożeń MySQL. Kliknij dalej.

Krok 2. Włącz replikację master-slave

W kroku 2 możesz włączyć replikację master-slave DigitalOcean MySQL, aby dodać wysoką dostępność do swojego wdrożenia. Replikacja jest ważna, aby Twoja aplikacja była dostępna i dostępna online dla użytkowników w przypadku awarii regionu centrum danych DigitalOcean. Podczas gdy DigitalOcean jest wysoce niezawodnym dostawcą chmury z 99,99% dostępnością, centra danych nieuchronnie przestają działać, więc replikacja danych do dodatkowych lokalizacji centrów danych pozwala zminimalizować ryzyko utraty danych i przestojów dla użytkowników.

Jeśli chcesz kontynuować samodzielne wdrożenie, kliknij Dalej, aby przejść do kroku 3 bez włączania konfiguracji master-slave.

Uwaga – konfiguracja master-slave jest dostępna tylko dla kont płatnych, nie można skonfigurować wdrożenia zestawu replik w trybie próbnym.

Skonfiguruj konfigurację MySQL Master-Slave

Istnieje tutaj kilka opcji dostosowania konfiguracji master-slave MySQL. Po pierwsze, możesz wybrać pomiędzy 2 + 1 Kworum lub 3 węzłami dla swojego wdrożenia. Oba oferują wysoką dostępność, ale w konfiguracji 2 + 1 Quorum masz tylko 2 węzły przenoszące dane, ponieważ węzeł Quorum służy jako decydent w przypadku przełączenia awaryjnego. Możesz również skontaktować się z pomocą techniczną, aby dostosować konfigurację master-slave, aby dodać więcej węzłów do swojego wdrożenia.

Następnie możesz wybrać replikację półsynchroniczną i asynchroniczną. Replikacja półsynchroniczna gwarantuje, że co najmniej jedno urządzenie podrzędne otrzymało wszystkie dane, które zatwierdził urządzenie główne, zapewniając, że przełączenie awaryjne do odpowiedniego urządzenia podrzędnego jest bezstratne. W replikacji asynchronicznej każdy slave synchronizuje się asynchronicznie z masterem, więc przełączanie awaryjne z mastera na slave może spowodować przełączenie awaryjne na serwer, który nie jest w pełni zsynchronizowany z bieżącym masterem.

Na koniec dostosuj lokalizacje centrów danych DigitalOcean, których chcesz używać dla swoich węzłów podrzędnych. Gdy skończysz, kliknij Dalej.

Jak skonfigurować MySQL na DigitalOceanKliknij, aby tweetować

Krok 3. Włącz SSL

W kroku 3 możesz włączyć SSL dla swojego wdrożenia. Domyślnie serwer MySQL zawsze instaluje i włącza konfigurację SSL, ale nie jest wymuszane, aby klienci łączyli się za pomocą SSL. Klienci mogą wybrać połączenie z SSL lub bez, ponieważ serwer zezwala na oba typy połączeń. Dowiedz się więcej o konfigurowaniu i zarządzaniu SSL w tym samouczku MySQL.

Krok 4. Skonfiguruj zapory

W ostatnim kroku procesu tworzenia klastra wprowadź co najmniej jeden IP CIDR, który będzie miał dostęp do wdrożenia MySQL, aby skonfigurować regułę zapory. Aktualny adres IP CIDR można znaleźć u góry strony. Można je później dostosować zarówno na poziomie klastra, jak i konta. Po wprowadzeniu kliknij Dodaj. Wprowadź wszystkie IP CIDR, które chcesz, a następnie kliknij Dalej.

Krok 5. Przejrzyj i utwórz

Ostatnia strona zawiera krótkie podsumowanie nowego klastra MySQL DigitalOcean. Przejrzyj wszystkie szczegóły i kliknij przycisk Wstecz, aby wrócić do wcześniejszego kroku i zmodyfikować konfiguracje. Gdy będziesz gotowy, kliknij Utwórz, aby uruchomić klaster.

I to wszystko! Twoje wdrożenie jest teraz udostępniane! Zajmuje to około 15 minut, więc czekając, możesz zapoznać się z narzędziami do zarządzania MySQL w konsoli – tworzeniem kopii zapasowych, przywracaniem, skalowaniem, alertami, analizą zapytań itp.

Połącz i migruj

Gdy stan klastra zmieni się z „Tworzenie” na „Uruchomiony”, możesz połączyć swoje wdrożenie. Można to zrobić na kilka różnych sposobów – poprzez parametry połączenia z aplikacją, wiersz poleceń, WordPress, MySQL Workbench lub inne popularne narzędzia GUI. Wszystkie szczegóły połączenia są dostępne w dolnej połowie karty Przegląd na stronie szczegółów klastra.

Odwiedź górne zakładki, aby utworzyć bazę danych MySQL i utworzyć użytkownika bazy danych MySQL. Można do nich uzyskać dostęp i zarządzać nimi w dowolnym momencie z konsoli ScaleGrid.

Przenieś swoją istniejącą instalację MySQL w kilka minut

Migracja to również zautomatyzowany proces, który wymaga tylko kilku szczegółów z istniejącego wdrożenia. Kliknij przycisk Importuj dane na karcie Przegląd i wprowadź nazwę serwera, port, nazwę(y) bazy danych, nazwę użytkownika i hasło. Zapoznaj się z naszym dokumentem MySQL Migrations, aby uzyskać więcej informacji i dodatkowe opcje migracji.

Chcesz samodzielnie wypróbować MySQL na DigitalOcean?

Wypróbuj ScaleGrid i skonfiguruj MySQL na DigitalOcean w kilku prostych krokach, korzystając z naszego całkowicie bezpłatnego 30-dniowego okresu próbnego. Zautomatyzuj hosting i zarządzanie MySQL w chmurze dzięki najpotężniejszym funkcjom zarządzania bazą danych, aby zoptymalizować wdrożenie.

Uruchamianie serwera MySQL na DigitalOcean

Po uruchomieniu wdrożenie MySQL może wirtualnie działać w trybie autopilota. Ponieważ ScaleGrid jest w pełni zarządzaną usługą, zajmujemy się całą codzienną administracją i konserwacją baz danych MySQL, dzięki czemu możesz skupić się na tworzeniu swojej aplikacji. Jeśli pojawi się coś, co wymaga Twojej uwagi, na przykład zacznie brakować miejsca na dysku, wyślemy Ci powiadomienie, abyś mógł się zalogować i sprawdzić, czy jesteś gotowy na skalowanie klastra.

Możesz również w każdej chwili skontaktować się z naszymi ekspertami MySQL za pośrednictwem naszego całodobowego wsparcia, które pomoże Ci skonfigurować i rozwiązać problemy z wdrożeniem.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć wartości nieliczbowe w kolumnie w MySQL?

  2. Jak wykonać UPSERT, abym mógł używać zarówno nowych, jak i starych wartości w części dotyczącej aktualizacji?

  3. Zainstaluj MySQL na Ubuntu bez pytania o hasło

  4. Korzystanie z relacyjnych baz danych MySQL w Gentoo

  5. Połącz się z mysql w kontenerze docker z hosta