SQL-Anweisungslernen ~ Umgebungskonstruktion ~ Docker + MySQL

Dieses Mal habe ich eine Umgebung für das Erlernen von SQL mit MySQL mithilfe von Docker vorbereitet, daher möchte ich sie gerne teilen. Es wird für diejenigen empfohlen, die die Umgebung von der für die tägliche Arbeit verwendeten Datenbank und der Datenbank für das Lernen trennen möchten.

Betriebsumgebung Mac(Catallina 10.15.7) Docker 19.03.13 docker-compose 1.27.4

Bitte installieren Sie Docker und Docker-Compose im Voraus.

Verzeichnisaufbau

.
├── docker-compose.yml  #docker-Konfigurationsdatei erstellen
└── mysql
    ├── my.cnf #MySQL-Konfigurationsdatei
    └── volume/ #Dient zum Synchronisieren der Daten im Container. (Für Details suchen Sie nach Docker-Persistenz)

Ich habe hier einen Artikel über den Befehl tree, um diese Art der Anzeige durchzuführen. Einfache Anzeige der Verzeichnisstruktur! Baumbefehl (Mac) Einführung häufig verwendeter Optionen

docker-compose.yml

Bitte kopieren Sie die folgenden Inhalte und fügen Sie sie ein. (Eine Erläuterung des Inhalts finden Sie im Abschnitt docker-compose.yml des folgenden Referenzartikels.) Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker

Dieses Mal erstellen wir auch eine Beispiel-DB aus der MySQL-Formel, sodass wir sie nicht mit docker-compose.yml erstellen.

docker-compose.yml


version: '3'
services:
    mysql:
        image: mysql:5.7
        container_name: mysql_docker
        environment: 
            MYSQL_ROOT_PASSWORD: root
            MYSQL_USER: dbuser
            MYSQL_PASSWORD: dbpass
            TZ: 'Asia/Tokyo'
        command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
        volumes:
            - ./mysql/volume:/var/lib/mysql
            - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
        ports:
            - 13306:3306

Wenn Sie das oben genannte kopieren können Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem sich die Datei docker-compose.yml befindet. Wenn es schließlich wie folgt angezeigt wird, gibt es kein Problem.

[mac]$ docker-compose up -d
Creating network "dockermysql_default" with the default driver
Creating mysql_docker ... done

Lassen Sie uns überprüfen, ob der Container gestartet wurde.

[Mac]$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                NAMES
aaeda519cf71        mysql:5.7           "docker-entrypoint.s…"   21 seconds ago      Up 5 seconds        33060/tcp, 0.0.0.0:13306->3306/tcp   mysql_docker

Wenn es wie oben angezeigt wird, gibt es kein Problem.

Versuchen Sie, eine Verbindung mit dem Client-Tool herzustellen.

Versuchen Sie, eine Verbindung mit dem Client-Tool herzustellen. Das diesmal verwendete Client-Tool ist DBeaver. Außerdem TablePlus und Sequel Pro MySQL Workbench. Es gibt verschiedene Tools wie Workbench /). Verwenden Sie daher bitte das gewünschte.

Erstellen Sie ein Arbeitsverzeichnis und klicken Sie auf die Schaltfläche Verbinden. スクリーンショット 2020-11-07 17.08.03.png

Dieses Mal werden wir MySQL verwenden, also wählen Sie MySQL. スクリーンショット 2020-11-07 17.08.23.png

Geben Sie die Informationen wie folgt ein: Verweisen Sie grundsätzlich auf den Inhalt von docker-compose.yml. Drücken Sie nach der Eingabe Testverbindung und スクリーンショット 2020-11-07 17.54.49.png

Sie können wie folgt verbinden. スクリーンショット 2020-11-07 17.56.59.png

Klicken Sie auf die Schaltfläche Ende, um den Vorgang abzuschließen. スクリーンショット 2020-11-07 17.57.23.png

Gießen Sie offizielle Probendaten ein

MySQL stellt offiziell Beispieldaten zur Verfügung. Ich würde es gerne einschenken und zum Lernen verwenden. Richtige MySQL-Beispieldaten

スクリーンショット 2020-11-07 17.19.33.png

Ich glaube, ich habe es diesmal im gzip-Format heruntergeladen.

Verschieben Sie nun die heruntergeladene Datei in das Stammverzeichnis dieses Projekts (das Verzeichnis, in dem sich docker-compose.yml befindet).

.
├── docker-compose.yml
├── mysql
│   ├── my.cnf
│   └── volume / #Seit ich den Container gestartet habe, befinden sich übrigens viele Ordner in diesem Verzeichnis.
└── world.sql.gz ← Hier setzen.

Da es eine große Sache ist, werde ich den Docker-Befehl cp verwenden, um den Ordner innerhalb des Containers zu senden.

[Mac]$ docker ps //Dadurch wird der Name des Containers bestätigt.
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                NAMES
aaeda519cf71        mysql:5.7           "docker-entrypoint.s…"   21 seconds ago      Up 5 seconds        33060/tcp, 0.0.0.0:13306->3306/tcp   mysql_docker

Ich habe herausgefunden, dass der Containername mysql_docker ist, also werde ich ihn an den Container senden.

[Mac]$ docker cp world.sql.gz mysql_docker:./

Es bedeutet, world.sql.gz in das Home-Verzeichnis von mysql_docker zu kopieren.

Überprüfen Sie, ob Sie kopieren können.

[Mac]$ docker exec -it mysql_docker bash
[Container]# ls | grep wold
world.sql.gz

Wenn es wie oben aussieht, gibt es kein Problem.

Lass es uns einschenken.

Führen Sie den folgenden Befehl im Container aus.

[Container]# zcat world.sql.gz | mysql -uroot -p //Passwort ist Docker-compose.Das in yml festgelegte Root-Benutzerpasswort.
[Container]# //Wenn nichts angezeigt wird, sind Sie fertig.
[Container]# mysql -uroot -p 
Enter password:
root@599851f8e10f:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.32 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| world              |
+--------------------+
5 rows in set (0.01 sec)

mysql> use world;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-----------------+
| Tables_in_world |
+-----------------+
| city            |
| country         |
| countrylanguage |
+-----------------+
3 rows in set (0.00 sec)

mysql>

zcat world.sql.gz | mysql -uroot -p Es ist ein Befehl, den von zcat world.sql.gz komprimierten Inhalt auszugeben und an den MySQL-Server zu senden.

mysql -uroot -p Geben Sie den Benutzer mit -u an. Geben Sie diesmal als Root ein. -p ist eine Option zur Eingabe des Passworts.

show databases; Gibt alle Datenbanken aus. Stellen Sie nun sicher, dass Sie eine Datenbank namens world haben.

use world; Der Befehl besteht darin, die laraveldb-Datenbank zu verwenden.

show tables; Es ist ein Befehl, um alle Tabellen der verwendeten Datenbank (Welt) auszugeben.

Überprüfen Sie im Detail mit dem Client-Tool.

Öffnen Sie das Client-Tool erneut und aktualisieren Sie (F5), um zu bestätigen, dass die DB namens world hinzugefügt wurde.

スクリーンショット 2020-11-07 18.06.59.png

Wenn die Daten so eingegeben werden, sind sie vollständig.

SQL-Ausführung

Schließlich möchte ich zum Abschluss nur eine einfache SELECT-Anweisung ausführen.

Aus dem SQL-Editor von DBeaver

SELECT 
*
FROM 
world.city
;

Und Renn スクリーンショット 2020-11-07 18.16.25.png

Wenn der Inhalt angezeigt wird, gibt es kein Problem.

Schließlich

Vielen Dank für das Lesen bis zum Ende. Nachdem die Umgebung für die Ausführung von SQL-Anweisungen vorhanden ist, möchte ich weiter lernen. Vielen Dank.

Recommended Posts

SQL-Anweisungslernen ~ Umgebungskonstruktion ~ Docker + MySQL
Konstruktionsnotiz für die MySQL 5.7 (Docker) -Umgebung
[Umgebungskonstruktion mit Docker] Rails 6 & MySQL 8
[Docker] Entwicklung der Entwicklungsumgebung Rails6 / Ruby2.7 / MySQL8
Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker
Aufbau der Rails Docker-Umgebung
Redmine (Docker) Umgebungskonstruktionsnotiz
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Aufbau der Docker x Spring Boot-Umgebung
[Rails / MySQL] Aufbau einer Mac-Umgebung
[Docker] postgres, pgadmin4-Umgebungskonstruktion
Erstellen Sie eine Entwicklungsumgebung für Rails-Anwendungen mit Docker [Docker, Rails, Puma, Nginx, MySQL]
Erstellen Sie die Node.js-Umgebung mit Docker Compose
Umgebungsbau mit Docker für Anfänger
Konstruktion der Laravel + Docker Laradock-Nutzungsumgebung
Konstruktionsverfahren für Rails on Docker-Umgebungen
Konstruktionsverfahren für die Docker-Umgebung "Rails 6 x MySQL 8" für die gemeinsame Nutzung mit Teams
Aufbau einer GPU-Umgebung mit Docker [Version Oktober 2020]
Schienenumgebungskonstruktion mit Docker (persönliche Apokalypse)
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Sapper × Go (Echo) × Aufbau einer Docker-Entwicklungsumgebung
Bearbeiten Sie MySQL mit Befehlen in der Docker-Umgebung
Aufbau der Spring Boot + Docker Java-Entwicklungsumgebung
Rails & React & Webpacker & MySQL Environment Konstruktionshandbuch
[Umgebungskonstruktion] Rails + MySQL + Docker (Anfänger können es auch in 30 Minuten verwenden!)
[Aufbau der Rails & Docker & MySQL-Umgebung] Ich habe den Container gestartet, kann aber MySQL nicht finden ...?
[Erste Umgebungskonstruktion] Ich habe versucht, eine Rails6 + MySQL8.0 + Docker-Umgebung unter Windows 10 zu erstellen.
[Java] Umgebungskonstruktion
Erstellen einer Kaggle-Umgebung mit offiziellem Docker und vscode
Aufbau einer IntelliJ + Docker (APP + DB) + SpringBoot (Maven) -Umgebung
[Frühling] Umweltbau
Konstruktions- und Entwicklungsverfahren für lokale WordPress-Umgebungen mit Docker
[Road_node.js_1-1] Der Weg zum Erstellen der Node.js Express MySQL-Umgebung mit Docker
Rails5 + MySQL8.0 + Top-Level-Volume-Umgebungskonstruktion mit Docker-Compose
Build Rails (API) x MySQL x Nuxt.js Umgebung mit Docker
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Erstellung einer Datenanalyseumgebung mit Docker (persönliches Memorandum)
[Flattern] Ubuntu 20.04 Umgebungskonstruktion
Java Entwicklungsumgebung Konstruktion
So erstellen Sie mit Docker ~ Express ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung