GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak nastavit MySQL pomocí Dockeru v Linuxu

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 (33063306 ) 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 nastavit MYSQL_ALLOW_EMPTY_PASSWORD=1 .
  • MYSQL_RANDOM_ROOT_PASSWORD → náhodné heslo bude vygenerováno při spuštění kontejneru. Musíte nastavit MYSQL_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 nebo docker-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 k localhost:3306 nebo 127.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 nebo localhost:<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 a docker-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
  1. Jak nastavit LogAnalyzer s Rsyslog a MySQL

  2. Jak nastavit Opencart na Rocky Linux/Centos 8 s Apache, PHP, Mysql (LAMP Stack)

  3. Jak nasadit aplikace s Rancherem

  1. Jak nastavit Pure-FTPD s MySQL na CentOS a RedHat

  2. Nastavte Nextcloud s Redis pomocí Dockeru

  3. Jak spustit MySQL v kontejneru Docker

  1. Jak nainstalovat Jenkins pomocí Docker

  2. Jak nasadit mikroslužby s Dockerem

  3. Jak nainstalovat Nextcloud s Dockerem na váš Linux Server