sql >> Databáze >  >> RDS >> Mysql

Instalace a konfigurace MySQL na Ubuntu 20.04

Uživatelé Ubuntu mají na výběr mezi dvěma spolehlivými systémy pro správu relačních databází (RDBMS),MySQL aMariaDB . MySQL má dlouhou tradici v popularitě, ale o MariaDB vzrostl zájem kvůli jejím výhodám ve výkonu a přidaným funkcím. Tato příručka porovnává dva databázové systémy a poskytuje pokyny, jak nainstalovat a používat MySQL na Ubuntu 20.04.

Co je MySQL?

MySQL RDBMS je jednou z nejpopulárnějších open source aplikací. Je součástí zásobníku LAMP , který je základním kamenem mnoha systémů Ubuntu. Tento zásobník se skládá z Linuxu, webového serveru Apache, MySQL RDBMS a programovacího jazyka PHP. Tyto aplikace spolupracují na podpoře webových aplikací, vývoje softwaru a specializovaných činností, jako je datová věda. Hlavní využití MySQL je v malých až středně velkých konfiguracích s jedním serverem.

Dotazy MySQL jsou psány v Structured Query Language (SQL). Jako relační databáze ukládá a organizuje data v tabulkách. Tabulky strukturují skutečná data uvnitř tabulek jako řadu řádků, přičemž každý řádek se skládá z jednoho nebo více sloupců. Každý řádek představuje jinou položku v tabulce, přičemž každý sloupec obsahuje jedno datové pole v položce. Pole dat v těchto tabulkách mohou být vzájemně propojeny a tyto vztahy pomáhají strukturovat a organizovat databázi. Specializované příkazy SQL umožňují klientům přidávat, mazat, upravovat a načítat data.

MySQL je známé svou stabilitou a spolehlivostí a je považováno za jednoduché a snadno použitelné. Je k dispozici jako bezplatný software s otevřeným zdrojovým kódem pod licencí GNU General Public License. MySQL je snadno dostupná pro všechny distribuce Linuxu i pro další operační systémy. Nyní je ve vlastnictví Oracle Corporation. Oracle také nabízí commercialMySQL Enterprise Edition jako produkt vyšší třídy.

MySQL vs. MariaDB

Dvě hlavní alternativy open source databáze, MySQL a MariaDB, jsou velmi podobné. Oba jsou produkty RDBMS a oba používají SQL. Oba databázové systémy mají bezplatné verze a vypadají a fungují v podstatě stejně. Protože MariaDB původně odbočila z MySQL, není to překvapivé. MariaDB od té doby prošla dalším vývojem a obsahuje mnoho nových vylepšení v oblasti zabezpečení a výkonu. S MySQL však mnoho pokročilých funkcí najdete pouze v Enterprise Edition. Zde je shrnutí podobností a rozdílů mezi těmito dvěma produkty:

  • MariaDB podporuje více připojení než MySQL.
  • Obě databáze mohou pracovat s více úložnými systémy, ačkoli MariaDB nabízí více možností.
  • MariaDB dokáže replikovat data rychleji než MySQL a má celkově lepší výkon. MySQL zpracovává velké transakce efektivněji, ale MariaDB funguje lépe ve škálovaných situacích.
  • MySQL podporuje některé funkce, které MariaDB nemá, jako jsou dynamické sloupce. Každá databáze má několik pokročilých funkcí a vylepšení, které ta druhá nemá.
  • MySQL je starší, lépe zavedené, populárnější a má větší podporu komunity. MySQL nabízí komplexnější plány placené podpory.
  • MariaDB a MySQL jsou plně kompatibilní.
  • Oba produkty jsou open source, ale licenční model MySQL je přísnější.

Abychom to shrnuli, oba systémy jsou pro většinu uživatelů více než dostačující. MariaDB nabízí lepší výkon, zatímco MySQL je lépe zavedená a lépe podporovaná.

Než začnete

  1. Pokud jste tak ještě neučinili, vytvořte si účet Linode a Compute Instance. Podívejte se na naše příručky Začínáme s Linode a Vytvoření výpočetní instance.

  2. Při aktualizaci systému postupujte podle našeho průvodce nastavením a zabezpečením výpočetní instance. Můžete také chtít nastavit časové pásmo, nakonfigurovat název hostitele, vytvořit omezený uživatelský účet a posílit přístup SSH.

Poznámka Kroky v této příručce jsou napsány pro uživatele bez oprávnění root. Příkazy, které vyžadují zvýšená oprávnění, mají předponu sudo . Pokud neznáte sudo naleznete v příručce Uživatelé a skupiny Linuxu.

Jak nainstalovat MySQL Server

MySQL je k dispozici jako součást výchozích balíčků Ubuntu, takže není nutné upravovat zdrojový seznam. Lze jej snadno nainstalovat pomocí apt , ale je důležité aplikaci zabezpečit a následně upravit firewall. Tyto pokyny jsou zaměřeny na uživatele Ubuntu, ale jsou obecně použitelné pro ty, kteří chtějí nainstalovat MySQL na jinou distribuci Linuxu.

Stáhnout MySQL

Chcete-li nainstalovat server MySQL na Ubuntu, postupujte podle následujících kroků:

  1. Nainstalujte serverovou aplikaci MySQL.

    sudo apt install mysql-server
    
  2. Pomocí systemctl ověřte, že server MySQL běží příkaz. Měl by zobrazovat stav 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

Konfigurace serveru MySQL v systému Linux

mysql_secure_installation nástroj je nejjednodušší způsob konfigurace aplikace. Chcete-li použít instalační skript, postupujte takto:

  1. Spusťte mysql_secure_installation nástroj pro nastavení hesla uživatele root a konfiguraci dalších výchozích možností.

    sudo mysql_secure_installation
    
  2. Aplikace se zeptá, zda má zapnout VALIDATE PASSWORD COMPONENT součástka. Pokud odpovíte y , pak se zeptá, zda nastavit sílu hesla na LOW , MEDIUM nebo 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. Na další výzvu nástroj požádá o heslo pro účet root. Nastavte heslo a poté jej zadejte znovu.

    Please set the password for root here.
    
    New password:
    
    Re-enter new password:
  4. Následující otázky se ptají, zda odstranit anonymní uživatele, aby byl povolen root pro vzdálené připojení a odstranění test databáze. Zadejte y nebo n při každé výzvě podle vašich preferencí. test databáze je užitečná při počáteční validaci, ale z bezpečnostních důvodů je nejlepší zakázat root od vzdáleného přihlášení.

    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 zobrazení výzvy znovu načtěte privilege tabulky pro aktualizaci databáze.

    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. (Volitelné ) Chcete-li vzdáleně přistupovat k MySQL, zajistěte, aby byl provoz MySQL povolen prostřednictvím ufw firewall. Přidejte následující pravidlo k otevření portu 3306 na firewallu. Toto pravidlo by nemělo být přidáno, pokud není vyžadován vzdálený přístup.

    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)

Přihlaste se do MySQL jako uživatel root

Ačkoli root uživatel má plný přístup k databázi MySQL, její použití by mělo být vyhrazeno pro administrativní účely. To snižuje možnost náhodného přepsání kritických částí databáze. I v nastavení pro jednoho uživatele by měl být pro většinu aktivit MySQL vytvořen samostatný uživatelský účet.

Pro přístup k serveru MySQL jako root uživatele a vytvořte nový uživatelský účet, postupujte takto:

  1. Použijte sudo mysql příkaz pro přístup k databázi. MySQL ověřuje uživatele root na základě jeho přihlašovacích údajů root při místním přihlášení, takže není vyžadováno žádné heslo. Případně přistupte k účtu root pomocí sudo mysql -u root -p , spolu s root heslo.

    sudo mysql
    
  2. MySQL zobrazí číslo verze a některé informace o instalaci a poté zobrazí výzvu 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. Chcete-li ověřit, zda MySQL funguje správně, použijte SHOW DATABASES příkaz k zobrazení všech databází.

    SHOW DATABASES;
    
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    4 rows in set (0.01 sec)
  4. Vytvořte nového uživatele pomocí CREATE USER příkaz. Zadejte uživatelské jméno ve formátu 'username'@'IP_Address' , kde IP_Address je IP adresa uživatele. Pokud uživatel přistupuje k MySQL z místního Linode, nahraďte localhost místo IP adresy. V níže uvedeném příkazu nahraďte mysqluser a password se skutečným uživatelským jménem a heslem.

    Poznámka MySQL nabízí několik různých autentizačních mechanismů. caching_sha2_password metoda je doporučena pro uživatele, kteří se chtějí přihlásit pomocí hesla a používá se zde. Některé starší aplikace však nemusí být schopny se tímto způsobem správně ověřit. V takovém případě mysql_native_password by měl být použit místo toho. Replikace zdrojové repliky MySQL může vyžadovat sha256_password metoda.
    CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
    
  5. Udělte přístup novému uživateli pomocí GRANT PRIVILEGE příkaz ve formátu GRANT list of privileges ON table TO 'username'@'IP_Address'; . Některá z běžnějších oprávnění zahrnují CREATE , ALTER , DROP , INSERT , UPDATE , DELETE a SELECT . Chcete-li tato oprávnění aplikovat na všechny databáze, použijte zástupnou proměnnou *.* . Následující příkaz uděluje společná neadministrativní oprávnění pro všechny databáze uživateli mysqluser .

    GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
    
  6. Chcete-li ukončit výzvu MySQL, napište exit .

    exit
    

Jak používat MySQL

MySQL používá standardní syntaxi SQL pro všechny své příkazy. Kroky v této části demonstrují, jak provádět základní úlohy v MySQL, jako je vytváření databází, tabulek a přidávání dat. Úplné informace o tom, jak používat MySQL, naleznete v referenční příručce MySQL. Pro krátký, ale důkladný úvod vyzkoušejte tutoriál MySQL.

Vytvořit databázi

  1. Chcete-li vytvořit databázi, přihlaste se do MySQL pomocí účtu CREATE privilegia. Nahraďte mysqlusername s uživatelským jménem, ​​které jste vytvořili.

    mysql -u mysqlusername -p
    
  2. Vytvořte novou databázi pomocí CREATE DATABASE příkaz. Nahraďte newdatabasename s požadovaným názvem vaší databáze.

    CREATE DATABASE newdatabasename;
    
    Query OK, 1 row affected (0.00 sec)
  3. Pro potvrzení, že nová databáze byla vytvořena správně, použijte SHOW DATABASES .

    SHOW DATABASES;
    
    +--------------------+
    | Database           |
    +--------------------+
    ...
    | newdatabasename   |
    ...
    +--------------------+
    5 rows in set (0.00 sec)
  4. Pomocí USE označte databázi, se kterou chcete pracovat příkaz. Nahraďte newdatabasename s názvem databáze, kterou jste právě vytvořili.

    USE newdatabasename;
    
    Database changed
    Poznámka Můžete také použít USE příkaz, když máte více než jednu databázi a chcete mezi nimi přepínat.
  5. Chcete-li zjistit název aktuální databáze, použijte SELECT DATABASE příkaz. Výstup zobrazí název databáze.

    SELECT DATABASE();
    
    +------------------+
    | DATABASE()       |
    +------------------+
    | newdatabasename |
    +------------------+

Vytvořit tabulku

V tomto okamžiku je databáze newdatabasename nemá žádné tabulky, takže do něj zatím není možné ukládat žádná data. Chcete-li definovat tabulku, použijte CREATE TABLE příkaz. Spolu s názvem tabulky tento příkaz vyžaduje název a datový typ každého pole. Datový typ charakterizuje data uložená v poli. Datovým typem může být například řetězec proměnné délky, známý jako VARCHAR . Úplný seznam datových typů naleznete v dokumentaci MySQL. Některé z běžnějších datových typů jsou následující.

  • INT: Může obsahovat hodnotu mezi -2147483648 a 2147483647 . Pokud je uvedeno jako UNSIGNED , může ukládat hodnoty mezi 0 a 4294967295 .
  • SMALLINT: Obsahuje ještě menší celočíselnou hodnotu mezi -32768 a 32767 .
  • PLOVÁK: Tento typ může uložit číslo s plovoucí desetinnou čárkou.
  • DATUM: Ukládá datum ve formátu YYYY-MM-DD formát.
  • DATETIME: Ukládá kombinaci data a času ve formátu YYYY-MM-DD HH:MM:SS formát. Stejný čas lze uložit bez pomlček a dvojteček v TIMESTAMP formát.
  • VARCHAR(N): Toto je řetězec proměnné délky mezi 1 a N znaků s maximální délkou 255 znaky.
  • TEXT: Tento typ dat pojme až 65535 znaky. Může obsahovat text, obrázky nebo binární data.
  • CHAR(N): Tento typ představuje textové pole pevné délky o délce N . Chcete-li například uchovat dvouznakové stavové kódy, použijte datový typ CHAR(2) .

Před vytvořením jakýchkoli tabulek je důležité rozhodnout se pro schéma pro databázi. Schéma popisuje, co každá tabulka představuje, jaká data jsou v každé tabulce uložena a jak spolu tabulky souvisí. Chcete-li vytvořit tabulku, postupujte takto:

  1. Při přihlášení do MySQL se přepněte do databáze, do které chcete přidat tabulku.

    use newdatabasename;
    
  2. Použijte CREATE TABLE příkaz k vygenerování nové tabulky. Použijte formát 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. Chcete-li potvrdit, že tabulka nyní existuje, použijte SHOW TABLES příkaz.

    SHOW TABLES;
    
    +----------------------------+
    | Tables_in_newdatabasename |
    +----------------------------+
    | newtablename              |
    +----------------------------+
    1 row in set (0.00 sec)
  4. Chcete-li zkontrolovat strukturu tabulky a ověřit seznam polí, použijte DESCRIBE příkaz.

    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. Pokud již tabulku nepotřebujete, odstraňte ji pomocí DROP TABLE příkaz.

    Pozor Když je tabulka zrušena, všechna data v tabulce jsou ztracena a nelze je obnovit.
    DROP TABLE newtablename;
    

Přidání a načtení dat

Hlavním způsobem vložení nového řádku dat do tabulky je INSERT příkaz.

  1. Chcete-li přidat řádek, použijte INSERT příkaz. Zadejte název tabulky, klíčové slovo VALUES a seznam hodnot v hranatých závorkách oddělených čárkami ve formátu INSERT INTO tablename VALUES ('value_1', ... 'value_n'); . Hodnoty sloupců musí mít stejnou sekvenci jako definice tabulky s hodnotami řetězce a data v uvozovkách. Chcete-li například přidat data do newtablename , zadejte hodnoty pro column1 , column2 , column3 a column4 , v tomto pořadí.

    INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
    
    Query OK, 1 row affected (0.01 sec)
  2. Chcete-li získat data, použijte SELECT spolu s některými omezeními, která říkají MySQL, které řádky má vrátit. Lze vrátit celý obsah tabulky nebo pouze podmnožinu. Chcete-li vybrat všechny řádky v tabulce, použijte SELECT * příkaz, ale nepřidávejte žádné kvalifikátory.

    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. Je také možné vybrat pouze řádky vyhovující konkrétním kritériím, například tam, kde je sloupec nastaven na určitou hodnotu. Použijte WHERE klíčové slovo jako kvalifikátor, za nímž následují kritéria shody jako omezení. V tomto příkladu jsou pouze řádky, ve kterých je column2 je nastaven na b jsou zobrazeny.

    SELECT * FROM newtablename WHERE column2 = 'b';
    
    +---------+---------+------------+---------+
    | column1 | column2 | column3    | column4 |
    +---------+---------+------------+---------+
    | value2  | b       | 2021-09-08 |     123 |
    +---------+---------+------------+---------+
    1 row in set (0.00 sec)
  4. U tabulek s mnoha sloupci je často snazší omezit zobrazované informace. Chcete-li pro každý řádek vybrat pouze určité sloupce, zadejte názvy sloupců namísto * symbol.

    SELECT column1, column4 FROM newtablename;
    
    +---------+---------+
    | column1 | column4 |
    +---------+---------+
    | value1  |     123 |
    | value2  |     123 |
    +---------+---------+
    2 rows in set (0.00 sec)
  5. Chcete-li upravit řádek v tabulce, použijte UPDATE příkaz. SET klíčové slovo označuje sloupec k aktualizaci a novou hodnotu. V případě potřeby WHERE klíčové slovo poskytuje metodu omezení operace, aby se vztahovala pouze na určité řádky. V následujícím příkladu je to hodnota column4 se změní pouze na 155 if column2 je rovno 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 * lze použít k potvrzení aktualizace.

    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)

Závěr:MySQL na Ubuntu 20.04

MySQL je dobrou volbou pro malé až středně velké webové aplikace. Používá průmyslový standardní programovací jazyk SQL, jehož použití je poměrně jednoduché. MySQL je velmi stabilní a robustní a má spoustu zdrojů spolu s dobrou podporou. Hlavní alternativou k MySQL je MariaDB. Vyznačuje se lepším výkonem a novějšími funkcemi, ale není tak dobře zavedená.

Server MySQL na Ubuntu můžete snadno stáhnout a nainstalovat pomocí apt balíčky a mysql_secure_installation užitečnost. I když jste jedinou osobou, která používá MySQL, je nejlepší vytvořit nového uživatele MySQL s omezenějšími oprávněními.

Chcete-li používat MySQL, nejprve určete schéma databáze a definujte obsah tabulky. Dále vytvořte databázi a datové tabulky. Data lze přidat pomocí INSERT příkaz, upravený pomocí UPDATE a načte se pomocí SELECT příkaz. MySQL samozřejmě dokáže provádět i velmi složité operace. Začněte prostudováním výukového programu MySQL a úplný přehled naleznete v dokumentaci k MySQL.

Další informace

Další informace o tomto tématu můžete získat v následujících zdrojích. Přestože jsou poskytovány v naději, že budou užitečné, vezměte prosím na vědomí, že nemůžeme ručit za přesnost nebo aktuálnost externě hostovaných materiálů.

  • Web MariaDB
  • Web MySQL

  1. Co dělá 'COLLATE SQL_Latin1_General_CP1_CI_AS'?

  2. 2 způsoby, jak vrátit řádky, které obsahují pouze alfanumerické znaky v PostgreSQL

  3. Získejte základní sloupce zobrazení na základě sady výsledků

  4. Příklad Oracle UTL_HTTP Post Multipart/Form-Data (JSON &ZIP).