Pokud jste v MySQL noví nebo někdo, kdo si přeje rychle a bez námahy nainstalovat databázi MySQL, pak je tento článek určen právě vám. V tomto článku se naučíme, jak nastavit MySQL pomocí Docker a Docker compose v Linuxu.
Začněme nastavením prostředí dockeru pro spuštění kontejneru MySQL.
1. Nainstalujte Docker
Než spustíte kontejner MySQL docker, musíte mít na svém počítači nainstalovaný docker a docker-compose. Pokud jste nenainstalovali docker a docker-compose, postupujte podle následujících příruček:
- Jak nainstalovat Docker v CentOS
- Jak nainstalovat Docker v Ubuntu
Můžete se také podívat na oficiální odkazy na dokumentaci Dockeru uvedené níže, abyste věděli, jak nastavit Docker a Docker compose.
- https://docs.docker.com/engine/install/
- https://docs.docker.com/compose/install/
Chcete-li zkontrolovat verze dockeru a docker-compose, se kterými používáte, můžete spustit následující příkazy.
$ docker --version Docker verze 20.10.11, sestavení dea9396
$ docker-compose --version docker-compose verze 1.29.2, sestavení neznámé
2. Stáhněte si MySQL Docker Image
Přejděte do Docker Hub získat image dokovacího zařízení MySQL . Důležité je, že se musíte rozhodnout, jakou verzi MySQL budete provozovat.
Spusťte následující příkaz a přetáhněte obraz MySQL z docker hubu do vašeho počítače.
$ docker pull mysql:latest
Pozor :Není nutné používat značku "latest
", ve výchozím nastavení stáhne nejnovější obrázek.
Chcete-li zkontrolovat, zda je obrázek místně dostupný, můžete spustit následující příkaz:
$ docker images mysql
Ukázkový výstup:
ID OBRÁZKU ZNAČKY ÚLOŽIŠTĚ VYTVOŘENO SIZEmysql nejnovější b05128b000dd před 12 dny 516 MB
Nyní je obrázek připraven k roztočení nádoby. Tento krok můžete také přeskočit a spustit „docker run
", jak je znázorněno v další části, který stáhne obrázek, pokud není lokálně dostupný.
3. Spusťte MySQL Container
Spusťte následující příkaz pro spuštění kontejneru MySQL docker:
$ docker spustit --name mysql -p 3306:3306 -v mysql_volume:/var/lib/mysql/ -d -e "MYSQL_ROOT_PASSWORD=temp123" mysql
Pojďme si výše uvedený příkaz rozebrat a podívat se, co jednotlivé příznaky dělají.
--name
→ Chcete-li pojmenovat svůj kontejner. Pokud tento příznak neurčíte, docker přiřadí některá náhodně vygenerovaná jména.
-p
→ Mapování portů. MySQL bude naslouchat na portu 3306
takže mapujeme porty (3306
→ 3306
) z vašeho hostitelského počítače do kontejneru dockeru. Není nutné, aby byl hostitelský port 3306
, může to být cokoliv, co je k dispozici k použití.
Spusťte následující netstat
ve vašem místním počítači zkontrolujte, zda mapovaný port po spuštění kontejneru naslouchá nebo ne.
$ netstat -tlnup | grep -i 3306
Ukázkový výstup:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 168870/docker-proxy tcp6 0 0 :::3306 :::* LISTEN 168878/docker-proxy
-v
→ Připojte objem k nádobě. Výchozí chování dockeru je, že po odstranění kontejneru data neuchová, takže o všechna data přijdete.
Pro vytvoření trvalého úložiště jsem vytvořil svazek s názvem "mysql_volume
". MySQL ukládá data do /var/lib/mysql/
uvnitř kontejneru a zde je namapován na adresář localhost /var/lib/docker/volumes/mysql_volume1/_data
, takže vaše data budou trvalá.
Pokud se chcete dozvědět více o svazcích dockerů, podívejte se na náš podrobný článek stejně.
-d
→ Spustí a spustí kontejner v odpojeném režimu. Pokud vynecháte -d
příznak, pak v terminálu uvidíte spouštěcí protokoly kontejneru a pro připojení ke kontejneru musíte otevřít novou relaci terminálu.
-e
→ Proměnné prostředí. Musíte nastavit heslo uživatele root mysql pomocí některého z níže uvedených parametrů.
MYSQL_ROOT_PASSWORD
→ Nastavte si vlastní heslo pomocí této proměnné prostředí.MYSQL_ALLOW_EMPTY_PASSWORD
→ Bude nastaveno prázdné nebo nulové heslo. Musíte nastavitMYSQL_ALLOW_EMPTY_PASSWORD=1
.MYSQL_RANDOM_ROOT_PASSWORD
→ náhodné heslo bude vygenerováno při spuštění kontejneru. Musíte nastavitMYSQL_RANDOM_ROOT_PASSWORD=1
vygenerovat náhodné heslo.
Pokud tento krok přeskočíte, bude vyvolána chyba, jak je uvedeno níže.
4. Zkontrolujte stav kontejneru MySQL
Stav spuštěného kontejneru můžete zkontrolovat pomocí následujícího příkazu:
$ docker ps
Ukázkový výstup:
ID KONTEJNERU PŘÍKAZ OBRÁZKU VYTVOŘEN STAV PORTY NAMESe1fb895f6f0f mysql "docker-entrypoint.s..." před 3 minutami Nahoru o 3 minuty 0.0.0.0:3306->3306/tcp, :::3306/tcc->306 /tcp mysql
5. Připojte se k databázi MySQL
Spusťte následující příkaz pro připojení ke kontejneru MySQL.
$ docker exec -it mysql bash
Připojte se k databázi MySQL jako root
uživatele spuštěním následujícího příkazu. V mém případě jsem si nastavil své vlastní heslo prostřednictvím MYSQL_ROOT_PASSWORD
.
$ mysql -u root -p
Pokud jste použili MYSQL_RANDOM_ROOT_PASSWORD=1
při spouštění kontejneru pak můžete získat automaticky vygenerované heslo z protokolů.
Protokoly $ docker
$ docker zaznamenává mysql
Automaticky vygenerované heslo root bude dlouhé a není třeba si ho pamatovat. Heslo uživatele root můžete resetovat spuštěním následujícího dotazu.
mysql> ALTER USER 'root'@'localhost' IDENTIFIKOVÁN BY 'mysqlpassword';
Nahraďte heslo 'mysqlpassword' svým vlastním heslem. Můžete si také vytvořit vlastního uživatele a udělit mu potřebná oprávnění.
6. Načíst ukázková data
Hlavním cílem nastavení mysql je načíst některá data a spouštět proti nim dotazy. Existuje několik způsobů, jak můžete načíst data. Mám ukázkový soubor s názvem "load_data.sql
" s následujícími dotazy.
VYTVOŘIT DATABÁZI, POKUD NEEXISTUJE fotbal;POUŽÍT fotbal;VYTVOŘIT TABULKU, POKUD NEEXISTUJE hráči (jméno_hráče VARCHAR(16) NENÍ NULL, věk_hráče INT NENÍ NULL, hráčský_klub VARCHAR(16) NENÍ NULL, země_hráče VARCHAR(16) NENÍ NULL); INSERT INTO players VALUES ("Messi",34,"PSG","Argentina");INSERT INTO players VALUES ("Ronaldo",36,"MANU","Portugal");INSERT INTO players VALUES ("Neymar",29 "PSG","Brazílie");INSERT INTO players VALUES ("Kane",28,"SPURS","Anglie");INSERT INTO players VALUES ("E Hazard",30,"MADRID","Belgie");
První přístup bude zkopírovat data z místního počítače do kontejneru docker pomocí "docker cp
"příkaz."
$ docker cp load_data.sql mysql:/tmp
$ docker exec -it mysql bash
$ ls -l /tmp/
Nyní se můžete připojit ke klientovi mysql a spustit zdrojový příkaz nebo přesměrovat soubor na klienta mysql.
$ mysql -u root -p
mysql> zdroj /tmp/load_data.sql
Nebo
$ mysql -u root -p
Připojte se k databázi a dotazujte se na tabulku.
$ mysql -u root -p
mysql> zobrazit databáze;
mysql> používat fotbal;
mysql> zobrazit tabulky;
mysql> vyberte * z hráčů;
Druhým přístupem by bylo přesměrování
.sql
soubor při spuštěnídocker exec
příkaz.
$ docker exec -i mysql mysql -u root -p
7. Nastavení kontejneru MySQL pomocí Docker-Compose
Namísto stažení obrázku a spuštění
docker run
můžete použít docker-compose pro rychlé roztočení nádoby. Docker-compose je nejvhodnější, když máte vytvořit více než jeden kontejner.
Vytvořte soubor s názvem
docker-compose.yml
nebodocker-compose.yaml
soubor. Zkopírujte a vložte následující kód yaml. To je stejné jako to, co jsem spustil ručně v předchozích částech.
verze:'3.8'služby:databáze:obrázek:mysql:nejnovější název_kontejneru:prostředí mysql:MYSQL_ROOT_PASSWORD:temp1234 porty:- "3306:3306" svazky:- mysql_volume:/var/lib/mysqlvolume:mysqlvolumes:myssqlvolumes:myssqlvolumes:>
Nyní spusťte následující příkaz, který spustí kontejner MySQL docker.
$ docker-compose up
Spuštěním následujícího příkazu zkontrolujte stav spuštěného kontejneru pomocí docker-compose:
$ docker-compose ps
Ukázkový výstup:
Pojmenujte porty státu příkazu ------------------------------------------- -------------------------------------------------- ----mysql docker-entrypoint.sh mysqld nahoru 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp
8. Připojte se k databázi MySQL pomocí MySQL Workbench
Doposud jsme viděli, jak se připojit k databázi pomocí klienta mysql z kontejneru. Můžete se také připojit k databázi pomocí libovolného klienta GUI, jako je mysql workbench, dbeaver, Heidi SQL atd.
Bez ohledu na to, jakého klienta GUI používáte, je důležité poznamenat, jaký port byl mapován při spouštění kontejneru.
V mém případě jsem namapoval localhost (
3306
) -> kontejner (3306
). Pokud tedy musím vytvořit připojení k databázi, musím se připojit klocalhost:3306
nebo127.0.01:3306
.
Jako klienta GUI používám MySQL Workbench. Pokud jste do svého počítače nenainstalovali pracovní plochu MySQL, můžete ji nainstalovat pomocí níže uvedených pokynů.
8.1. Nainstalujte MySQL Workbench v Linuxu
Přejděte na oficiální stránku ke stažení souboru balíčku. Chcete-li stáhnout
.deb
, musíte si vybrat svůj operační systém nebo.rpm
soubor.
V dalším kroku budete požádáni o přihlášení nebo registraci. Přihlášení nebo registraci můžete přeskočit kliknutím na možnost „Ne, děkuji, jen spustit stahování“.
Na systémech založených na Debianu nainstalujte MySQL Workbench následujícím způsobem:
$ cd
$ sudo apt install ./mysql-workbench-community_8.0.27-1ubuntu21.04_amd64.deb
Na systémech založených na RHEL nainstalujte MySQL Workbench následujícím způsobem:
$ cd
$ sudo dnf localinstall ./mysql-workbench-community-8.0.27-1.el8.x86_64.rpm
Jakmile je instalace dokončena, můžete spustit mysql workbench buď z nabídky, nebo z pomlčky.
Spusťte MySQL Workbench
8.2. Připojte se k databázi MySQL
Připojte se k databázi běžící v kontejneru dockeru. Měli byste se pokusit připojit k
localhost:3306
nebolocalhost:<port-no>
podle toho, jak je váš kontejner nastaven.
Před připojením k databázi můžete stisknout "Test připojení " ke kontrole, zda se pracovní plocha MySQL mohla úspěšně připojit k instanci databáze.
Nyní můžete začít spouštět své dotazy proti tabulkám, které jste vytvořili.
9. Závěr
V tomto článku jsme stručně viděli, jak spustit kontejnery MySQL v dockeru pomocí
docker run
adocker-compose
metody. Pokud chcete nastavit MySQL pro účely testování nebo učení, Docker je více než dostačující.
Doufám, že to pomůže.
Docker