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

Jak nasadit MySQL na Ubuntu a plně spravované

V tomto příspěvku na blogu vám ukážeme krok za krokem, jak nainstalovat a nastavit server MySQL, a to jak ručně v operačním systému Ubuntu 20.04, tak pomocí spravované databázové služby ScaleGrid. V následujících částech tohoto tutoriálu vám pomůžeme projít každým krokem k úspěšnému nastavení vašeho vlastního serveru MySQL a jeho správné konfiguraci.

Něco o MySQL a Ubuntu

MySQL je open-source systém pro správu relačních databází (DBMS). Běží na serverech Windows a Linux a běžně se instaluje jako součást zásobníku LAMP (Linux, Apache, MySQL, PHP/Python/Perl) nebo zásobníku LEMP (Linux, Nginx, MySQL, PHP). Je to vhodná volba, pokud víte, že prostě potřebujete databázi, protože je to rychlý, jednoduchý a škálovatelný systém založený na SQL a je považován za nejoblíbenější systém pro správu relačních databází.

Zatímco Ubuntu je jedním z celosvětově nejoblíbenějších desktopových OS s otevřeným zdrojovým kódem, Ubuntu 20.04 přichází se stabilitou podnikové třídy, odolností a ještě lepším zabezpečením v cenově efektivním modelu.

Jak nainstalovat MySQL na Ubuntu 20.04

Než se ponoříme do procesu instalace serveru MySQL na Ubuntu, mějte na paměti tyto předpoklady:

  • Server Ubuntu 20.04 s administrátorem bez oprávnění root nebo uživatelem sudo pro provádění autoritativních kroků a firewallem nakonfigurovaným UFW
  • Systém by měl být aktualizován pomocí:
    • sudo apt update
    • sudo apt upgrade -y
  • Stabilní připojení k síti

Nová instalace MySQL na Ubuntu 20.04

Nainstalujte MySQL

Chcete-li nainstalovat MySQL na Ubuntu 20.04, lze provést jednoduchý příkaz (apt install mysql server), protože instalační balíček je součástí oficiálního úložiště Ubuntu 20.04.

apt install mysql-server -y

Zabezpečení instalace serveru MySQL

Server MySQL má předem vytvořený skript pro jeho bezpečnou instalaci. Běžnou praxí pro zajištění bezpečné instalace je spuštění tohoto skriptu po příkazu instalace. Umožňuje uživateli nastavit heslo root pro MySQL, zakázat přístupnost účtu root zvenčí místního hostitele, odstranit anonymní uživatelské účty a také odstranit testovací databázi, ke které mohou přistupovat anonymní uživatelé. Tento skript lze vyvolat pomocí tohoto sudo příkaz:

sudo mysql_secure_installation

Po spuštění skriptu zabezpečené instalace se zobrazí řada výzev. První výzvou je nastavení VALIDATE PASSWORD COMPONENT . Tato výzva (pokud je vybrána) provede ověření po vytvoření hesla uživatele. Umožní vám vytvořit heslo pouze v případě, že odpovídá standardům hesel na MySQL.

Nastavení hesla uživatele root

Následující výzva slouží k nastavení hesla pro root. Toto heslo by měl nastavit uživatel. Odpovězte na všechny následující výzvy jako „Ano“, protože se jedná o osvědčený postup z hlediska zabezpečení.

Nastavení SSL pro instalaci serveru MySQL

Po instalaci MySQL jsou chvíle, kdy je databázový server konfigurován na samostatném fyzickém počítači buď ve stejné nebo jiné síti. Pro komunikaci s takovou databází je potřeba komunikace zabezpečená a šifrovaná. Proto musí být na databázovém serveru nainstalovány a povoleny certifikáty SSL. Protokol SSL používá pár klíčů k ověřování, zabezpečení a správě zabezpečených připojení. Ke generování klíčů SSL použijte následující příkaz:

sudo mysql_ssl_rsa_setup --uid=mysql

Jejich výchozí adresář obsahuje tyto klíče a můžete je najít vyvoláním následujícího příkazu:

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

mysql> \s

Vyvoláním výše uvedeného příkazu z příkazového řádku SQL můžete potvrdit, že SSL je aktivní, vyhledáním řádku SSL: Cipher in use is […] , jak je vidět na obrázku níže.

Zabezpečení vaší databáze

Zabezpečení databáze je jedním z nejdůležitějších prvků, které je třeba vzít v úvahu při plánování instalace MySQL. Útočníci neustále hledají způsoby, jak získat zadní vrátka do databázových systémů a získat vnitřní informace o cíli. Změna výchozího portu je snadný způsob, jak zvýšit zabezpečení databáze. Toto lze změnit v konfiguračním souboru na adrese /etc/mysql/mysql.conf.d/mysqld.cnf .

Vytvoření uživatele a databáze MySQL

Pomocí tohoto jednoduchého příkazu můžete vytvořit uživatelský účet databáze MySQL spolu s jeho heslem:

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

Pole localhost v CREATE USER příkaz označuje, že se uživatel připojí ze stejného serveru. Může být nahrazena IP adresou, pokud se chcete připojit ze stroje s konkrétní IP adresou, nebo může být nahrazena znakem procenta % pokud chce uživatel přistupovat k DB odkudkoli.

Pokud chcete pouze vytvořit databázi, můžete ji vytvořit pomocí následujícího příkazu:

CREATE DATABASE databasename;

Po vytvoření uživatele a databáze budou uživateli udělena požadovaná oprávnění pro databázi.

Oprávnění mohou být libovolného typu; například CREATE , ALTER , INSERT , UPDATE , DELETE , SELECT , RELOAD , atd. Obvykle vlastník databáze potřebuje všechna oprávnění a tato oprávnění lze uživateli přidělit nezávisle. Všechna tato oprávnění lze udělit najednou pomocí příkazu.

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

Klíčové slovo localhost lze opět nahradit adresou IP nebo znakem % podepsat, pokud se uživatel zamýšlí připojit z konkrétní IP adresy nebo jakéhokoli jiného zdroje.

Oprávnění pro uživatele lze zobrazit pomocí příkazu SHOW GRANTS

SHOW GRANTS for 'databaseuser'@'localhost';

Všechna oprávnění mohou být uživateli odebrána pomocí příkazu:

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

Zde to můžete vidět po spuštění REVOKE uživatel jason nemá žádná oprávnění .

Vytváření a mazání tabulek

Je snadné přidávat nebo odstraňovat tabulky z databáze. Vše, co musíte udělat, je použít jeden z následujících příkazů:

DROP TABLE databasename.tablename

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

Parametr sloupce určuje název, zatímco parametr datatype určuje, jaký typ dat sloupec obsahuje.

Jsou chvíle, kdy musí být primární klíč přidán do sloupce. Primární klíč vám umožňuje jednoznačně identifikovat každou položku v tabulce. To lze provést zmínkou v CREATE TABLE příkaz. Níže uvedený příklad vytvoří sloupec user_id s primárním klíčem, který se automaticky zvyšuje. Mějte na paměti, že primární klíč musí obsahovat jedinečné hodnoty a nemůže obsahovat hodnoty null

Přidat nebo odebrat sloupce v tabulce

Sloupce lze také přidat nebo odstranit z konkrétní tabulky databáze po jejím vytvoření.

Chcete-li to provést, změňte databázi, kterou chcete změnit, pomocí use database_name příkaz.

Následně následující příkazy přidají a vypustí sloupec:

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

Vložit data do tabulky

Vložte data do tabulky pomocí následujícího příkazu:

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

Budete muset zadat názvy sloupců a hodnotu, která se má vložit do každého sloupce v daném pořadí. Pokud chcete vložit hodnoty do každého sloupce tabulky, můžete jednoduše vynechat sloupce a začít uvádět hodnoty přímo za názvem tabulky:

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

Update Data in a Table

K aktualizaci dat v tabulce použijte následující příkaz:

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

WHERE podmínka říká, ve kterém řádku mají být data aktualizována. Pokud podmínka není zadána, pak se data aktualizují ve všech řádcích zadaného sloupce.

Vyberte Data z tabulky

Chcete-li vybrat a zobrazit data z určitých sloupců v tabulce, použijte následující příkaz:

SELECT column1,column2 FROM tablename;

Chcete-li však vybrat všechny sloupce z tabulky, použije se příkaz:

SELECT * FROM tablename;

Povolit binární protokolování

Povolení binárního protokolování na databázovém serveru MySQL vám umožní protokolovat dotazy, které provedly změny v databázi. Binární protokolování je užitečná funkce, kterou povolíte, pokud například potřebujete vyřešit problém způsobený dotazem v databázi.

Chcete-li povolit binární protokolování, přidejte následující řádek do konfiguračního souboru na adrese /etc/mysql/mysql.conf.d/mysqld.cnf .

log-bin=mysql-bin.log

Chcete-li ověřit, zda je binární protokolování aktivní, vyvolejte z prostředí MySQL následující příkaz:

show variables like  '% log_bin%'

Ve výchozím nastavení jsou binární soubory protokolu uloženy v /var/lib/mysql adresář ve většině distribucí Linuxu včetně Ubuntu.

Nastavení jednoduché asynchronní replikace

MySQL má podporu pro replikaci, která se hodí při plánování obnovy po havárii a ujištění se, že minimalizujete potenciál jakéhokoli výpadku. MySQL podporuje dva typy replikací:

  • Semisynchronní replikace
  • Asynchronní replikace

U semisynchronní replikace, když zdroj potvrdí transakci, všechny repliky také potvrdí transakci předtím, než se zdroj vrátí do relace, která transakci provedla. Nevýhodou je, že to způsobuje velké zpoždění v dokončení transakce kvůli výše uvedenému transakčnímu systému.

Zatímco u asynchronní replikace zdroj zapisuje události do svého binárního protokolu a repliky si je vyžádají, když jsou připraveny. Neexistuje však žádná záruka, že jakákoli událost někdy dosáhne nějaké repliky.

Ve výchozím nastavení má MySQL povolenou asynchronní replikaci kvůli rychlé době zpracování. Hlavní nevýhodou však je, že pokud zdrojová databáze selže, neexistuje způsob, jak získat data, která nedokončila transakce do replikovaných databází. Na druhou stranu semisynchronní režim replikace se více zaměřuje na dostupnost a trvanlivost dat, ale je velmi pomalý. Výběr režimu replikace závisí výhradně na specifických potřebách uživatele v souvislosti s nastavením databáze.

Do souboru my.cnf pro zdrojový server a server repliky můžete zapsat ID serveru jako:

server_id=1
server_id=2

Na zdrojovém serveru lze vytvořit vyhrazeného uživatele MySQL, kterého bude replika používat k připojení ke zdrojovému serveru.

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

Proces replikace na replikačním serveru lze spustit:

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;

Tyto pokyny začnou vytvářet replikovaný server jako kopii zdrojového serveru.

Zálohování/obnova databáze MySQL

Uchování zálohy databáze je vždy dobrý nápad, nikdy nevíte, kdy ji budete potřebovat, aby nedošlo ke ztrátě důležitých dat. Chcete-li zálohovat databázi pro MySQL na OS Ubuntu, jednoduše spusťte následující mysqldump příkaz:

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

Chcete-li obnovit smazanou databázi, je nejprve vytvořena databáze se stejným názvem v MySQL. Databáze se poté obnoví příkazem:

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

Následující snímek obrazovky nejprve smaže naši testovací_databázi, poté ji znovu vytvoří a pokusí se obnovit všechna její data z dříve vytvořené zálohy. Import dat lze také provést stejným postupem.

Dokončení instalace MySQL na Ubuntu

Nyní jste úspěšně dokončili základní kroky k instalaci MySQL na Ubuntu 20.04. Po dokončení instalace budete mít funkční relační databázi, kterou můžete použít k vytvoření své další aplikace nebo webu.

Pokud byste raději celý tento proces zautomatizovali a spravovali jej odborníci, podívejte se na další část tohoto průvodce.

Použití ScaleGrid k nastavení nasazení DigitalOcean MySQL

V této části průvodce používáme naše plně spravované hostingové řešení MySQL, protože nabízí nejvyšší propustnost a nejnižší latenci na DigitalOcean. Zjistěte více v článku Nejlepší výkon MySQL DigitalOcean, kde můžete porovnat ceny, latenci a propustnost databází ScaleGrid vs. DigitalOcean Managed Databases.

Celý proces by měl trvat méně než 20 minut, přičemž na začátku stačí pár minut na přizpůsobení konfigurace nasazení MySQL a na konci pár minut na připojení k vaší aplikaci .

Po přihlášení k bezplatnému zkušebnímu účtu první věc, kterou uděláte, je vybrat MySQL jako databázi, DigitalOcean jako cloud a Dedicated Hosting jako plán pro zahájení proces vytváření clusteru:

Krok 1. Zadejte podrobnosti o nasazení MySQL

Průvodce vytvořením clusteru se otevře v prvním kroku, ve kterém můžete přizpůsobit základní podrobnosti svého nasazení. Zadejte název clusteru pomocí alfanumerických znaků a použijte jedinečný popisný název, abyste jej později mohli snadno rozpoznat.

Dále z rozbalovací nabídky oblasti cloudu vyberte datové centrum DigitalOcean, které chcete použít pro svůj hlavní server – doporučujeme použít stejnou oblast jako vaše aplikace DigitalOcean Droplets. výkon. Poté můžete vybrat velikost vašeho virtuálního počítače instancí DigitalOcean Droplet a verzi MySQL, kterou chcete používat (podporované všechny hlavní verze). InnoDB Storage Engine je výchozí pro všechna nasazení MySQL. Klikněte na další.

Krok 2. Povolte replikaci Master-Slave

V kroku 2 můžete povolit replikaci DigitalOcean MySQL master-slave, abyste svému nasazení přidali vysokou dostupnost. Replikace je důležitá pro udržení vaší aplikace dostupné a online pro vaše uživatele v případě, že váš region datového centra DigitalOcean selže. Zatímco DigitalOcean je vysoce spolehlivý poskytovatel cloudu s 99,99% dostupností, datová centra nevyhnutelně upadají, takže replikace vašich dat do dalších umístění datových center vám umožní minimalizovat riziko ztráty dat a výpadků vašich uživatelů.

Pokud chcete pokračovat v samostatném nasazení, kliknutím na tlačítko Další přejděte ke kroku 3 bez povolení konfigurace master-slave.

Poznámka – konfigurace master-slave je dostupná pouze pro placené účty, nemůžete nastavit nasazení sady replik, když jste ve zkušebním režimu.

Nakonfigurujte nastavení MySQL Master-Slave

Existuje několik možností, jak přizpůsobit nastavení MySQL master-slave. Nejprve si můžete pro své nasazení vybrat mezi 2 + 1 kvorem nebo 3 uzly. Oba nabízejí vysokou dostupnost, ale v nastavení kvora 2 + 1 máte pouze 2 uzly nesoucí data, protože uzel kvora slouží jako rozhodovací orgán v případě převzetí služeb při selhání. Můžete také kontaktovat podporu a upravit konfiguraci master-slave a přidat do svého nasazení další uzly.

Dále si můžete vybrat mezi semisynchronní a asynchronní replikací. Semisynchronní replikace zaručuje, že alespoň jedna podřízená jednotka přijala všechna data, která se zavázala hlavní, a zajišťuje, že převzetí služeb při selhání na správné podřízené je bezeztrátové. Při asynchronní replikaci se každý slave synchronizuje asynchronně s masterem, takže převzetí služeb při selhání z master na slave může vést k převzetí služeb při selhání na server, který není plně synchronizován s aktuální master.

Nakonec přizpůsobte umístění datových center DigitalOcean, která chcete použít pro své podřízené uzly. Až budete hotovi, klikněte na Další.

Jak nastavit MySQL na DigitalOceanClick To Tweet

Krok 3. Povolte SSL

V kroku 3 můžete pro své nasazení povolit protokol SSL. Ve výchozím nastavení server MySQL vždy nainstaluje a povolí konfiguraci SSL, ale není vynuceno, aby se klienti připojovali pomocí SSL. Klienti si mohou vybrat připojení s nebo bez SSL, protože server umožňuje oba typy připojení. Další informace o konfiguraci a správě SSL naleznete v tomto kurzu MySQL.

Krok 4. Nakonfigurujte brány firewall

V posledním kroku procesu vytváření clusteru zadejte alespoň jeden IP CIDR, který bude mít povolen přístup k vašemu nasazení MySQL pro nastavení pravidla brány firewall. Aktuální IP CIDR naleznete v horní části stránky. Ty lze později upravit jak na úrovni clusteru, tak na úrovni účtu. Jakmile jej zadáte, klikněte na Přidat. Zadejte všechny IP CIDR, které chcete, a poté klikněte na Další.

Krok 5. Kontrola a vytvoření

Poslední stránka obsahuje krátké shrnutí vašeho nového clusteru MySQL DigitalOcean. Zkontrolujte všechny podrobnosti a kliknutím na tlačítko Předchozí se vraťte k předchozímu kroku a upravte své konfigurace. Až budete připraveni, klikněte na Vytvořit, aby se váš cluster roztočil.

A je to! Vaše nasazení je nyní zajišťováno! To trvá asi 15 minut, takže se během čekání můžete seznámit s nástroji pro správu MySQL v konzole – zálohování, obnova, škálování, výstrahy, analýza dotazů atd.

Připojit a migrovat

Jakmile se stav clusteru změní z „Vytváření“ na „Spuštěno“, můžete své nasazení připojit. Existuje několik různých způsobů, jak toho dosáhnout – prostřednictvím vašeho připojovacího řetězce k vaší aplikaci, prostřednictvím příkazového řádku, prostřednictvím WordPressu, prostřednictvím MySQL Workbench nebo jiných oblíbených nástrojů GUI. Všechny podrobnosti o připojení jsou k dispozici v dolní polovině karty Přehled na stránce podrobností o clusteru.

Navštivte horní karty a vytvořte databázi MySQL a vytvořte uživatele databáze MySQL. K nim lze přistupovat a spravovat je kdykoli z konzoly ScaleGrid.

Migrujte svou stávající instalaci MySQL během několika minut

Migrace je také automatizovaný proces, který vyžaduje jen několik podrobností z vašeho stávajícího nasazení. Klikněte na tlačítko Importovat data na kartě Přehled a zadejte název serveru, port, název databáze, uživatelské jméno a heslo. Další podrobnosti a další možnosti migrace naleznete v našem dokumentu o migracích MySQL.

Chcete si MySQL na DigitalOcean sami vyzkoušet?

Vyzkoušejte ScaleGrid a nastavte MySQL na DigitalOcean pomocí několika jednoduchých kroků pomocí naší zcela bezplatné 30denní zkušební verze. Automatizujte své hostování a správu MySQL v cloudu pomocí nejvýkonnějších funkcí správy databází pro optimalizaci nasazení.

Spuštění serveru MySQL na DigitalOcean

Jakmile budete připraveni, vaše nasazení MySQL může virtuálně fungovat na autopilotu. Vzhledem k tomu, že ScaleGrid je plně spravovaná služba, postaráme se o veškerou vaši každodenní správu a údržbu vašich databází MySQL, takže se můžete soustředit na vytváření vaší aplikace. Pokud by se objevilo něco, co vyžaduje vaši pozornost, například nedostatek místa na disku, zašleme vám upozornění, abyste se mohli přihlásit a zjistit, zda jste připraveni rozšířit svůj cluster.

Můžete se také kdykoli spojit s našimi odborníky na MySQL prostřednictvím naší nepřetržité podpory, která vám pomůže s nastavením a odstraňováním problémů s nasazením.


  1. SQLite - Nelze otevřít soubor databáze

  2. Crystal Reports vs. Microsoft SQL Server Reporting Services

  3. Ruby 'pg' drahokam odkazující na špatnou kopii libpq.5.dylib (na OSX)

  4. Jak naplánovat dotaz MySQL?