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
-
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.
-
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ředponusudo
. Pokud neznátesudo
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ů:
-
Nainstalujte serverovou aplikaci MySQL.
sudo apt install mysql-server
-
Pomocí
systemctl
ověřte, že server MySQL běží příkaz. Měl by zobrazovat stavactive
.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:
-
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
-
Aplikace se zeptá, zda má zapnout
VALIDATE PASSWORD COMPONENT
součástka. Pokud odpovítey
, pak se zeptá, zda nastavit sílu hesla naLOW
,MEDIUM
neboHIGH
.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?
-
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:
-
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. Zadejtey
nebon
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ázatroot
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
-
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!
-
(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í portu3306
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:
-
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 sroot
heslo.sudo mysql
-
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>
-
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)
-
Vytvořte nového uživatele pomocí
CREATE USER
příkaz. Zadejte uživatelské jméno ve formátu'username'@'IP_Address'
, kdeIP_Address
je IP adresa uživatele. Pokud uživatel přistupuje k MySQL z místního Linode, nahraďtelocalhost
místo IP adresy. V níže uvedeném příkazu nahraďtemysqluser
apassword
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žadovatsha256_password
metoda.CREATE USER 'mysqluser'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
-
Udělte přístup novému uživateli pomocí
GRANT PRIVILEGE
příkaz ve formátuGRANT 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
aSELECT
. 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živatelimysqluser
.GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD ON *.* TO 'mysqluser'@'localhost' WITH GRANT OPTION;
-
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
-
Chcete-li vytvořit databázi, přihlaste se do MySQL pomocí účtu
CREATE
privilegia. Nahraďtemysqlusername
s uživatelským jménem, které jste vytvořili.mysql -u mysqlusername -p
-
Vytvořte novou databázi pomocí
CREATE DATABASE
příkaz. Nahraďtenewdatabasename
s požadovaným názvem vaší databáze.CREATE DATABASE newdatabasename;
Query OK, 1 row affected (0.00 sec)
-
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)
-
Pomocí
USE
označte databázi, se kterou chcete pracovat příkaz. Nahraďtenewdatabasename
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. -
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
a2147483647
. Pokud je uvedeno jakoUNSIGNED
, může ukládat hodnoty mezi0
a4294967295
. - SMALLINT: Obsahuje ještě menší celočíselnou hodnotu mezi
-32768
a32767
. - 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 vTIMESTAMP
formát. - VARCHAR(N): Toto je řetězec proměnné délky mezi
1
aN
znaků s maximální délkou255
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ý typCHAR(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:
-
Při přihlášení do MySQL se přepněte do databáze, do které chcete přidat tabulku.
use newdatabasename;
-
Použijte
CREATE TABLE
příkaz k vygenerování nové tabulky. Použijte formátCREATE 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)
-
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)
-
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)
-
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.
-
Chcete-li přidat řádek, použijte
INSERT
příkaz. Zadejte název tabulky, klíčové slovoVALUES
a seznam hodnot v hranatých závorkách oddělených čárkami ve formátuINSERT 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 donewtablename
, zadejte hodnoty procolumn1
,column2
,column3
acolumn4
, v tomto pořadí.INSERT INTO newtablename VALUES ('value1','a','2021-09-10',123);
Query OK, 1 row affected (0.01 sec)
-
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žijteSELECT *
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)
-
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 jecolumn2
je nastaven nab
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)
-
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)
-
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řebyWHERE
klíčové slovo poskytuje metodu omezení operace, aby se vztahovala pouze na určité řádky. V následujícím příkladu je to hodnotacolumn4
se změní pouze na155
ifcolumn2
je rovnob
.UPDATE newtablename SET column4 = 155 WHERE column2 = 'b';
Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
-
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