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.
.
├── 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. 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.
Dieses Mal werden wir MySQL verwenden, also wählen Sie MySQL.
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
Sie können wie folgt verbinden.
Klicken Sie auf die Schaltfläche Ende, um den Vorgang abzuschließen.
MySQL stellt offiziell Beispieldaten zur Verfügung. Ich würde es gerne einschenken und zum Lernen verwenden. Richtige MySQL-Beispieldaten
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.
Öffnen Sie das Client-Tool erneut und aktualisieren Sie (F5), um zu bestätigen, dass die DB namens world hinzugefügt wurde.
Wenn die Daten so eingegeben werden, sind sie vollständig.
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
Wenn der Inhalt angezeigt wird, gibt es kein Problem.
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