Użytkownicy Ubuntu mają do wyboru dwa niezawodne systemy zarządzania relacyjnymi bazami danych (RDBMS),MySQL iMariaDB . MySQL od dawna cieszy się popularnością, ale zainteresowanie MariaDB wzrosło ze względu na jego zalety wydajnościowe i dodatkowe funkcje. Ten przewodnik porównuje dwa systemy baz danych i zawiera instrukcje dotyczące instalacji i używania MySQL na Ubuntu 20.04.
Co to jest MySQL?
MySQL RDBMS to jedna z najpopularniejszych aplikacji typu open source. Jest częścią stosu LAMP , który jest podstawą wielu systemów Ubuntu. Ten stos składa się z systemu Linux, serwera WWW Apache, RDBMS MySQL i języka programowania PHP. Aplikacje te współpracują ze sobą w celu obsługi aplikacji internetowych, tworzenia oprogramowania i specjalistycznych działań, takich jak nauka o danych. Główne zastosowanie MySQL to małe i średnie konfiguracje z jednym serwerem.
Zapytania MySQL są pisane w Structured Query Language (SQL). Jako relacyjna baza danych przechowuje i organizuje dane w tabelach. Tabele strukturyzują rzeczywiste dane w tabelach jako serię wierszy, z których każdy składa się z jednej lub więcej kolumn. Każdy wiersz reprezentuje inny wpis w tabeli, a każda kolumna zawiera jedno pole danych we wpisie. Pola danych w tych tabelach mogą być ze sobą powiązane, a relacje te pomagają ustrukturyzować i zorganizować bazę danych. Wyspecjalizowane instrukcje SQL umożliwiają klientom dodawanie, usuwanie, modyfikowanie i pobieranie danych.
MySQL jest znany ze swojej stabilności i niezawodności i jest uważany za prosty i łatwy w użyciu. Jest dostępny jako darmowe oprogramowanie open source na licencji GNU General Public License. MySQL jest łatwo dostępny dla wszystkich dystrybucji Linuksa, a także innych systemów operacyjnych. Obecnie jest własnością Oracle Corporation. Oracle oferuje również komercyjną wersję MySQL Enterprise Edition jako produkt wyższej klasy.
MySQL kontra MariaDB
Dwie główne alternatywy bazy danych open source, MySQL i MariaDB, są bardzo podobne. Oba są produktami RDBMS i oba używają SQL. Oba systemy baz danych mają darmowe wersje i wyglądają i działają w bardzo podobny sposób. Ponieważ MariaDB pierwotnie oddzieliła się od MySQL, nie jest to zaskakujące. MariaDB przeszła dalszy rozwój i zawiera wiele nowych ulepszeń w zakresie bezpieczeństwa i wydajności. Jednak w przypadku MySQL wiele zaawansowanych funkcji można znaleźć tylko w wersji Enterprise. Oto podsumowanie podobieństw i różnic między tymi dwoma produktami:
- MariaDB obsługuje więcej połączeń niż MySQL.
- Obie bazy danych mogą współpracować z wieloma systemami pamięci masowej, chociaż MariaDB oferuje więcej opcji.
- MariaDB może replikować dane szybciej niż MySQL i ma lepszą ogólną wydajność. MySQL bardziej efektywnie obsługuje duże transakcje, ale MariaDB działa lepiej w skalowanych sytuacjach.
- MySQL obsługuje niektóre funkcje, których nie ma MariaDB, takie jak kolumny dynamiczne. Każda baza danych ma kilka zaawansowanych funkcji i ulepszeń, których nie ma druga.
- MySQL jest starszy, lepiej ugruntowany, bardziej popularny i ma większe wsparcie społeczności. MySQL oferuje bardziej kompleksowe płatne plany wsparcia.
- MariaDB i MySQL są w pełni kompatybilne.
- Oba produkty są open source, ale model licencjonowania MySQL jest bardziej restrykcyjny.
Podsumowując, oba systemy są więcej niż wystarczające dla większości użytkowników. MariaDB oferuje lepszą wydajność, a MySQL jest lepiej ugruntowany i lepiej obsługiwany.
Zanim zaczniesz
-
Jeśli jeszcze tego nie zrobiłeś, utwórz konto Linode i instancję obliczeniową. Zobacz nasze przewodniki Wprowadzenie do Linode i tworzenie instancji obliczeniowej.
-
Postępuj zgodnie z naszym przewodnikiem Konfigurowanie i zabezpieczanie instancji Compute, aby zaktualizować system. Możesz także ustawić strefę czasową, skonfigurować nazwę hosta, utworzyć ograniczone konto użytkownika i utwardzić dostęp SSH.
Uwaga Czynności opisane w tym przewodniku zostały napisane dla użytkowników innych niż root. Polecenia wymagające podwyższonych uprawnień są poprzedzone przedrostkiemsudo
. Jeśli nie znaszsudo
polecenia, zobacz przewodnik po użytkownikach i grupach Linuksa.
Jak zainstalować serwer MySQL
MySQL jest dostępny jako część domyślnych pakietów Ubuntu, więc nie ma potrzeby edytowania listy źródeł. Można go łatwo zainstalować za pomocą apt
, ale ważne jest, aby zabezpieczyć aplikację i później edytować zaporę. Te instrukcje są skierowane do użytkowników Ubuntu, ale ogólnie mają zastosowanie dla tych, którzy chcą zainstalować MySQL na innej dystrybucji Linuksa.
Pobierz MySQL
Aby zainstalować serwer MySQL na Ubuntu, wykonaj następujące czynności:
-
Zainstaluj aplikację serwera MySQL.
sudo apt install mysql-server
-
Upewnij się, że serwer MySQL działa przy użyciu
systemctl
Komenda. Powinien wyświetlać stanactive
.sudo systemctl status mysql
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:> Active: active (running) since Thu 2021-09-09 12:24:29 UTC; 1h 44min ago
Skonfiguruj serwer MySQL w systemie Linux
mysql_secure_installation
Narzędzie to najprostszy sposób na skonfigurowanie aplikacji. Aby użyć skryptu instalacyjnego, wykonaj następujące kroki:
-
Uruchom
mysql_secure_installation
narzędzie do ustawiania hasła roota i konfigurowania innych domyślnych opcji.sudo mysql_secure_installation
-
Aplikacja pyta, czy włączyć
VALIDATE PASSWORD COMPONENT
składnik. Jeśli odpowieszy
, następnie pyta, czy ustawić siłę hasła naLOW
,MEDIUM
lubHIGH
.VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component?
-
W następnym monicie narzędzie poprosi o hasło do konta root. Ustaw hasło, a następnie wprowadź je ponownie.
Please set the password for root here. New password: Re-enter new password:
-
Poniższe pytania dotyczą usuwania anonimowych użytkowników, aby umożliwić
root
konto, aby połączyć się zdalnie i usunąćtest
Baza danych. Wpiszy
lubn
na każdym monicie zgodnie z własnymi preferencjami.test
baza danych jest przydatna podczas wstępnej walidacji, ale ze względów bezpieczeństwa najlepiej jest zabronić dostępu doroot
konto przed zdalnym logowaniem.By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No
-
Po wyświetleniu monitu przeładuj
privilege
tabele do aktualizacji bazy danych.Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No)
y
Success. All done!
-
(Opcjonalnie ) Aby uzyskać zdalny dostęp do MySQL, upewnij się, że ruch MySQL jest dozwolony przez
ufw
zapora. Dodaj następującą regułę, aby otworzyć port3306
na zaporze. Ta reguła nie powinna być dodawana, jeśli zdalny dostęp nie jest wymagany.ufw allow mysql
Status: active To Action From -- ------ ---- Apache Full ALLOW Anywhere OpenSSH ALLOW Anywhere 3306/tcp ALLOW Anywhere Apache Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6) 3306/tcp (v6) ALLOW Anywhere (v6)
Zaloguj się do MySQL jako użytkownik root
Chociaż root
użytkownik ma pełny dostęp do bazy danych MySQL, korzystanie z niej powinno być zastrzeżone dla celów administracyjnych. Zmniejsza to ryzyko przypadkowego nadpisania krytycznych sekcji bazy danych. Nawet w przypadku konfiguracji z jednym użytkownikiem, dla większości działań MySQL należy utworzyć oddzielne konto użytkownika.
Aby uzyskać dostęp do serwera MySQL jako root
użytkownika i utwórz nowe konto użytkownika, wykonaj następujące czynności:
-
Użyj
sudo mysql
polecenie, aby uzyskać dostęp do bazy danych. MySQL uwierzytelnia użytkownika root na podstawie jego poświadczeń podczas lokalnego logowania, więc hasło nie jest wymagane. Alternatywnie, uzyskaj dostęp do konta root za pomocąsudo mysql -u root -p
, wraz zroot
hasło.sudo mysql
-
MySQL wyświetla numer wydania i pewne informacje o instalacji, a następnie wyświetla monit MySQL.
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 8.0.26-0ubuntu0.20.04.2 (Ubuntu) ... mysql>
-
Aby upewnić się, że MySQL działa poprawnie, użyj
SHOW DATABASES
polecenie, aby wyświetlić wszystkie bazy danych.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
-
Utwórz nowego użytkownika za pomocą
CREATE USER
Komenda. Wpisz nazwę użytkownika w formacie'username'@'IP_Address'
, gdzieIP_Address
to adres IP użytkownika. Jeśli użytkownik uzyskuje dostęp do MySQL z lokalnego Linode, zastąplocalhost
w miejsce adresu IP. W poniższym poleceniu zastąpmysqluser
ipassword
z rzeczywistą nazwą użytkownika i hasłem.Uwaga MySQL oferuje kilka różnych mechanizmów uwierzytelniania.
caching_sha2_password
metoda jest zalecana dla użytkowników, którzy chcą zalogować się za pomocą hasła i jest tutaj używana. Jednak niektóre starsze aplikacje mogą nie być w stanie prawidłowo uwierzytelnić się w ten sposób. W takim przypadkumysql_native_password
powinien być używany zamiast. Replikacja źródła-repliki MySQL może wymagaćsha256_password
metoda.CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
-
Przyznaj dostęp nowemu użytkownikowi za pomocą
GRANT PRIVILEGE
polecenie, używając formatuGRANT list of privileges ON table TO 'username'@'IP_Address';
. Niektóre z bardziej powszechnych uprawnień toCREATE
,ALTER
,DROP
,INSERT
,UPDATE
,DELETE
iSELECT
. Aby zastosować te uprawnienia do wszystkich baz danych, użyj zmiennej wieloznacznej*.*
. Następujące polecenie przyznaje wspólne uprawnienia nieadministracyjne we wszystkich bazach danych użytkownikowimysqluser
.GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
-
Aby wyjść z wiersza poleceń MySQL, wpisz
exit
.exit
Jak korzystać z MySQL
MySQL używa standardowej składni SQL dla wszystkich swoich poleceń. Kroki w tej sekcji pokazują, jak wykonywać podstawowe zadania w MySQL, takie jak tworzenie baz danych, tabel i dodawanie danych. Aby uzyskać pełne informacje na temat korzystania z MySQL, zobacz Podręcznik MySQL Reference. Aby uzyskać krótkie, ale dokładne wprowadzenie, wypróbuj samouczek MySQL.
Utwórz bazę danych
-
Aby utworzyć bazę danych, zaloguj się do MySQL przy użyciu konta z
CREATE
przywileje. Zastąpmysqlusername
z nazwą użytkownika, którą utworzyłeś.mysql -u mysqlusername -p
-
Utwórz nową bazę danych za pomocą
CREATE DATABASE
Komenda. Zastąpnewdatabasename
z żądaną nazwą bazy danych.CREATE DATABASE newdatabasename;
Query OK, 1 row affected (0.00 sec)
-
Aby potwierdzić, że nowa baza danych została utworzona poprawnie, użyj
SHOW DATABASES
.SHOW DATABASES;
+--------------------+ | Database | +--------------------+ ... | newdatabasename | ... +--------------------+ 5 rows in set (0.00 sec)
-
Wskaż bazę danych, z którą chcesz pracować za pomocą
USE
Komenda. Zastąpnewdatabasename
z nazwą właśnie utworzonej bazy danych.USE newdatabasename;
Database changed
Uwaga Możesz także użyć
USE
polecenie, gdy masz więcej niż jedną bazę danych i chcesz się między nimi przełączać. -
Aby znaleźć nazwę aktualnej bazy danych, użyj
SELECT DATABASE
Komenda. Wynik wyświetla nazwę bazy danych.SELECT DATABASE();
+------------------+ | DATABASE() | +------------------+ | newdatabasename | +------------------+
Utwórz tabelę
W tym momencie baza danych newdatabasename
nie ma żadnych tabel, więc nie można w nim jeszcze przechowywać żadnych danych. Aby zdefiniować tabelę, użyj CREATE TABLE
Komenda. Wraz z nazwą tabeli to polecenie wymaga nazwy i typu danych każdego pola. Typ danych charakteryzuje dane przechowywane w polu. Na przykład typ danych może być ciągiem o zmiennej długości, znanym jako VARCHAR
. Pełną listę typów danych można znaleźć w dokumentacji MySQL. Oto niektóre z bardziej popularnych typów danych.
- INT: Może zawierać wartość z zakresu
-2147483648
i2147483647
. Jeśli określono jakoUNSIGNED
, może przechowywać wartości między0
i4294967295
. - MAŁY: Posiada jeszcze mniejszą wartość całkowitą pomiędzy
-32768
i32767
. - PŁYWAJĄCY: Ten typ może przechowywać liczbę zmiennoprzecinkową.
- DATA: Przechowuje datę w
YYYY-MM-DD
format. - DATA GODZINA: Przechowuje kombinację daty i godziny w formacie
YYYY-MM-DD HH:MM:SS
format. Ten sam czas można przechowywać bez myślników i dwukropków wTIMESTAMP
format. - VARCHAR(N): To jest ciąg znaków o zmiennej długości między
1
iN
długość znaków, z maksymalną długością255
znaków. - TEKST: Ten typ danych mieści do
65535
postacie. Może przechowywać tekst, obrazy lub dane binarne. - CHAR(N): Ten typ reprezentuje pole tekstowe o stałej długości i długości
N
. Na przykład, aby przechowywać dwuznakowe kody stanów, użyj typu danychCHAR(2)
.
Przed utworzeniem jakichkolwiek tabel ważne jest, aby wybrać schemat dla bazy danych. Schemat opisuje, co reprezentuje każda tabela, jakie dane są przechowywane w każdej tabeli i jak te tabele są powiązane. Aby utworzyć tabelę, wykonaj następujące kroki:
-
Po zalogowaniu się do MySQL przejdź do bazy danych, do której chcesz dodać tabelę.
use newdatabasename;
-
Użyj
CREATE TABLE
polecenie, aby wygenerować nową tabelę. Użyj formatuCREATE TABLE table_name (field_1 datatype, field_n datatype);
.CREATE TABLE newtablename (column1 VARCHAR(20), column2 CHAR(1), column3 DATE, column4 SMALLINT UNSIGNED);
Query OK, 0 rows affected (0.02 sec)
-
Aby potwierdzić, że tabela już istnieje, użyj
SHOW TABLES
polecenie.SHOW TABLES;
+----------------------------+ | Tables_in_newdatabasename | +----------------------------+ | newtablename | +----------------------------+ 1 row in set (0.00 sec)
-
Aby przejrzeć strukturę tabeli i zweryfikować listę pól, użyj
DESCRIBE
polecenie.DESCRIBE newtablename;
+---------+-------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------------+------+-----+---------+-------+ | column1 | varchar(20) | YES | | NULL | | | column2 | char(1) | YES | | NULL | | | column3 | date | YES | | NULL | | | column4 | smallint unsigned | YES | | NULL | | +---------+-------------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
-
Jeśli tabela nie jest już potrzebna, usuń ją za pomocą
DROP TABLE
polecenie.Uwaga Kiedy tabela jest usuwana, wszystkie dane w niej są tracone i nie można ich odzyskać.
DROP TABLE newtablename;
Dodaj i pobierz dane
Głównym sposobem wstawienia nowego wiersza danych do tabeli jest użycie INSERT
polecenie.
-
Aby dodać wiersz, użyj
INSERT
Komenda. Podaj nazwę tabeli, słowo kluczoweVALUES
oraz ujętą w nawias, rozdzielaną przecinkami listę wartości w formacieINSERT INTO tablename VALUES ('value_1', ... 'value_n');
. Wartości kolumn muszą mieć taką samą kolejność jak definicja tabeli, z wartościami ciągu i daty w cudzysłowie. Na przykład, aby dodać dane donewtablename
, określ wartości dlacolumn1
,column2
,column3
icolumn4
, w tej kolejności.INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
Query OK, 1 row affected (0.01 sec)
-
Aby pobrać dane, użyj
SELECT
polecenie, wraz z pewnymi ograniczeniami mówiącymi MySQL, które wiersze ma zwrócić. Może zostać zwrócona cała zawartość tabeli lub tylko jej podzbiór. Aby zaznaczyć wszystkie wiersze w tabeli, użyjSELECT *
polecenie, ale nie dodawaj żadnych kwalifikatorów.SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
-
Możliwe jest również wybranie tylko wierszy spełniających określone kryteria, na przykład, gdy kolumna jest ustawiona na określoną wartość. Użyj
WHERE
słowo kluczowe jako kwalifikator, a następnie kryteria dopasowania jako ograniczenie. W tym przykładzie tylko wiersze, w którychcolumn2
jest ustawiony nab
są wyświetlane.SELECT * FROM newtablename WHERE column2 = 'b';
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value2 | b | 2021-09-08 | 123 | +---------+---------+------------+---------+ 1 row in set (0.00 sec)
-
W przypadku tabel z wieloma kolumnami często łatwiej jest ograniczyć wyświetlane informacje. Aby wybrać tylko określone kolumny dla każdego wiersza, określ nazwy kolumn zamiast
*
symbol.SELECT column1, column4 FROM newtablename;
+---------+---------+ | column1 | column4 | +---------+---------+ | value1 | 123 | | value2 | 123 | +---------+---------+ 2 rows in set (0.00 sec)
-
Aby zmodyfikować wiersz w tabeli, użyj
UPDATE
Komenda.SET
słowo kluczowe wskazuje kolumnę do zaktualizowania i nową wartość. W razie potrzebyWHERE
Słowo kluczowe udostępnia metodę ograniczania operacji do zastosowania tylko do określonych wierszy. W poniższym przykładzie wartośćcolumn4
zmienia się tylko na155
jeślicolumn2
jest równeb
.UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
-
SELECT *
oświadczenie może być użyte do potwierdzenia aktualizacji.SELECT * FROM newtablename;
+---------+---------+------------+---------+ | column1 | column2 | column3 | column4 | +---------+---------+------------+---------+ | value1 | a | 2021-09-10 | 123 | | value2 | b | 2021-09-08 | 155 | +---------+---------+------------+---------+ 2 rows in set (0.00 sec)
Wniosek:MySQL na Ubuntu 20.04
MySQL to dobry wybór dla małych i średnich aplikacji internetowych. Używa standardowego języka programowania SQL, który jest dość prosty w użyciu. MySQL jest bardzo stabilny i solidny oraz ma mnóstwo zasobów wraz z dobrym wsparciem. Główną alternatywą dla MySQL jest MariaDB. Oferuje lepszą wydajność i nowsze funkcje, ale nie jest tak dobrze ugruntowany.
Możesz łatwo pobrać i zainstalować serwer MySQL na Ubuntu za pomocą apt
pakiety i mysql_secure_installation
pożytek. Nawet jeśli jesteś jedyną osobą, która używa MySQL, najlepiej jest utworzyć nowego użytkownika MySQL z bardziej ograniczonymi uprawnieniami.
Aby użyć MySQL, najpierw określ schemat bazy danych i zdefiniuj zawartość tabeli. Następnie utwórz bazę danych i tabele danych. Dane można dodać za pomocą INSERT
polecenie, zmodyfikowane za pomocą UPDATE
i pobierane za pomocą SELECT
Komenda. Oczywiście MySQL może wykonywać nawet bardzo złożone operacje. Aby rozpocząć, zapoznaj się z samouczkiem MySQL i zapoznaj się z dokumentacją MySQL, aby uzyskać pełny przegląd.
Więcej informacji
Dodatkowe informacje na ten temat można znaleźć w poniższych zasobach. Chociaż są one dostarczane w nadziei, że będą przydatne, należy pamiętać, że nie możemy ręczyć za dokładność ani aktualność materiałów hostowanych zewnętrznie.
- Witryna MariaDB
- Strona internetowa MySQL