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

Instalacja i konfiguracja MySQL na Ubuntu 20.04

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

  1. Jeśli jeszcze tego nie zrobiłeś, utwórz konto Linode i instancję obliczeniową. Zobacz nasze przewodniki Wprowadzenie do Linode i tworzenie instancji obliczeniowej.

  2. 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 przedrostkiem sudo . Jeśli nie znasz sudo 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:

  1. Zainstaluj aplikację serwera MySQL.

    sudo apt install mysql-server
    
  2. Upewnij się, że serwer MySQL działa przy użyciu systemctl Komenda. Powinien wyświetlać stan active .

    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:

  1. Uruchom mysql_secure_installation narzędzie do ustawiania hasła roota i konfigurowania innych domyślnych opcji.

    sudo mysql_secure_installation
    
  2. Aplikacja pyta, czy włączyć VALIDATE PASSWORD COMPONENT składnik. Jeśli odpowiesz y , następnie pyta, czy ustawić siłę hasła na LOW , MEDIUM lub HIGH .

    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?
  3. 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:
  4. Poniższe pytania dotyczą usuwania anonimowych użytkowników, aby umożliwić root konto, aby połączyć się zdalnie i usunąć test Baza danych. Wpisz y lub n 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 do root 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
  5. 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!
  6. (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ć port 3306 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:

  1. 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 z root hasło.

    sudo mysql
    
  2. 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>
  3. 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)
  4. Utwórz nowego użytkownika za pomocą CREATE USER Komenda. Wpisz nazwę użytkownika w formacie 'username'@'IP_Address' , gdzie IP_Address to adres IP użytkownika. Jeśli użytkownik uzyskuje dostęp do MySQL z lokalnego Linode, zastąp localhost w miejsce adresu IP. W poniższym poleceniu zastąp mysqluser i password 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 przypadku mysql_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';
    
  5. Przyznaj dostęp nowemu użytkownikowi za pomocą GRANT PRIVILEGE polecenie, używając formatu GRANT list of privileges ON table TO 'username'@'IP_Address'; . Niektóre z bardziej powszechnych uprawnień to CREATE , ALTER , DROP , INSERT , UPDATE , DELETE i SELECT . 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żytkownikowi mysqluser .

    GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
    
  6. 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

  1. Aby utworzyć bazę danych, zaloguj się do MySQL przy użyciu konta z CREATE przywileje. Zastąp mysqlusername z nazwą użytkownika, którą utworzyłeś.

    mysql -u mysqlusername -p
    
  2. Utwórz nową bazę danych za pomocą CREATE DATABASE Komenda. Zastąp newdatabasename z żądaną nazwą bazy danych.

    CREATE DATABASE newdatabasename;
    
    Query OK, 1 row affected (0.00 sec)
  3. 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)
  4. Wskaż bazę danych, z którą chcesz pracować za pomocą USE Komenda. Zastąp newdatabasename 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ć.
  5. 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 i 2147483647 . Jeśli określono jako UNSIGNED , może przechowywać wartości między 0 i 4294967295 .
  • MAŁY: Posiada jeszcze mniejszą wartość całkowitą pomiędzy -32768 i 32767 .
  • 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 w TIMESTAMP format.
  • VARCHAR(N): To jest ciąg znaków o zmiennej długości między 1 i N 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 danych CHAR(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:

  1. Po zalogowaniu się do MySQL przejdź do bazy danych, do której chcesz dodać tabelę.

    use newdatabasename;
    
  2. Użyj CREATE TABLE polecenie, aby wygenerować nową tabelę. Użyj formatu CREATE 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)
  3. Aby potwierdzić, że tabela już istnieje, użyj SHOW TABLES polecenie.

    SHOW TABLES;
    
    +----------------------------+
    | Tables_in_newdatabasename |
    +----------------------------+
    | newtablename              |
    +----------------------------+
    1 row in set (0.00 sec)
  4. 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)
  5. 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.

  1. Aby dodać wiersz, użyj INSERT Komenda. Podaj nazwę tabeli, słowo kluczowe VALUES oraz ujętą w nawias, rozdzielaną przecinkami listę wartości w formacie INSERT 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 do newtablename , określ wartości dla column1 , column2 , column3 i column4 , w tej kolejności.

    INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
    
    Query OK, 1 row affected (0.01 sec)
  2. 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żyj SELECT * 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)
  3. 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órych column2 jest ustawiony na b 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)
  4. 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)
  5. Aby zmodyfikować wiersz w tabeli, użyj UPDATE Komenda. SET słowo kluczowe wskazuje kolumnę do zaktualizowania i nową wartość. W razie potrzeby WHERE 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 na 155 jeśli column2 jest równe b .

    UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';
    
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
  6. 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO MySQL:użyć PDO::ATTR_EMULATE_PREPARES czy nie?

  2. Najlepsze alternatywy dla środowiska pracy MySQL

  3. Jak ustawić domyślną wartość dla kolumny MySQL Datetime?

  4. Włącz rejestrowanie powolnych zapytań (dziennik powolnych zapytań) w bazie danych MySQL

  5. MySQL 8.0 - Klient nie obsługuje protokołu uwierzytelniania żądanego przez serwer; rozważ aktualizację klienta MySQL