Apprentissage des instructions SQL ~ Construction de l'environnement ~ Docker + MySQL

Cette fois, j'ai préparé un environnement pour apprendre le SQL de base en utilisant MySQL en utilisant docker, donc j'aimerais le partager. Il est recommandé à ceux qui souhaitent séparer l'environnement de la base de données utilisée pour le travail quotidien et de la base de données pour l'apprentissage.

Environnement d'exploitation Mac(Catallina 10.15.7) Docker 19.03.13 docker-compose 1.27.4

Veuillez installer docker et docker-compose à l'avance.

Structure du répertoire

.
├── docker-compose.yml  #docker-composer le fichier de configuration
└── mysql
    ├── my.cnf #fichier de configuration mysql
    └── volume/ #Utilisé pour synchroniser les données dans le conteneur. (Pour plus de détails, recherchez par persistance du docker)

J'ai un article ici sur la commande tree pour faire ce genre d'affichage. Affichage facile de la structure des répertoires! Commande d'arborescence (Mac) Présentation des options fréquemment utilisées

docker-compose.yml

Veuillez copier et coller le contenu suivant. (Pour une explication du contenu, consultez la section docker-compose.yml de l'article de référence ci-dessous.) Création d'un environnement pour Laravel + MySQL + phpMyadmin avec Docker

De plus, cette fois, nous allons créer un exemple de base de données à partir de la formule MySQL, donc nous ne le créerons pas avec docker-compose.yml.

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

Si vous pouvez copier ce qui précède Exécutez la commande suivante dans le répertoire contenant le fichier docker-compose.yml. S'il est finalement affiché comme ci-dessous, il n'y a pas de problème.

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

Vérifions que le conteneur a démarré.

[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

S'il est affiché comme ci-dessus, il n'y a pas de problème.

Essayez de vous connecter avec l'outil client.

Essayez de vous connecter avec l'outil client. L'outil client utilisé cette fois est DBeaver. En outre, TablePlus et sequel pro [MySQL Workbench](https://dev.mysql.com/downloads/ Il existe différents outils tels que workbench /), veuillez donc utiliser celui que vous aimez.

Créez un répertoire de travail et appuyez sur le bouton de connexion. スクリーンショット 2020-11-07 17.08.03.png

Cette fois, nous utiliserons MySQL, alors sélectionnez MySQL. スクリーンショット 2020-11-07 17.08.23.png

Saisissez les informations comme suit: En gros, reportez-vous au contenu de docker-compose.yml. Après la saisie, appuyez sur la connexion de test et スクリーンショット 2020-11-07 17.54.49.png

Vous pouvez vous connecter comme suit. スクリーンショット 2020-11-07 17.56.59.png

Cliquez sur le bouton de fin pour terminer. スクリーンショット 2020-11-07 17.57.23.png

Versez des échantillons de données officiels

MySQL fournit officiellement des exemples de données. Je voudrais le verser et l'utiliser pour étudier. Exemples de données MySQL appropriés

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

Je pense que je l'ai téléchargé au format gzip cette fois.

Déplacez maintenant le fichier téléchargé vers le répertoire racine de ce projet (le répertoire où se trouve docker-compose.yml).

.
├── docker-compose.yml
├── mysql
│   ├── my.cnf
│   └── volume / #Au fait, depuis que j'ai lancé le conteneur, il y a de nombreux dossiers dans ce répertoire.
└── world.sql.gz ← Mettez ici.

Comme c'est un gros problème, j'utiliserai la commande docker cp pour envoyer le dossier à l'intérieur du conteneur.

[Mac]$ docker ps //Cela confirmera le nom du conteneur.
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

J'ai découvert que le nom du conteneur est mysql_docker, je vais donc l'envoyer au conteneur.

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

Cela signifie copier world.sql.gz dans le répertoire personnel de mysql_docker.

Vérifiez si vous pouvez copier.

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

S'il apparaît comme ci-dessus, il n'y a pas de problème.

Versons-le.

Exécutez la commande suivante dans le conteneur.

[récipient]# zcat world.sql.gz | mysql -uroot -p //Le mot de passe est docker-compose.Le mot de passe de l'utilisateur root défini dans yml.
[récipient]# //Si rien ne s'affiche, vous avez terminé.
[récipient]# 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 C'est une commande pour sortir le contenu compressé par zcat world.sql.gz et l'envoyer au serveur mysql.

mysql -uroot -p Spécifiez l'utilisateur avec -u. Cette fois, entrez en tant qu'utilisateur root. -p est une option pour entrer le mot de passe.

show databases; Sort toutes les bases de données. Assurez-vous maintenant que vous avez un DB appelé world.

use world; La commande consiste à utiliser la base de données laraveldb.

show tables; C'est une commande pour sortir toutes les tables de la base de données (monde) en cours d'utilisation.

Vérifiez en détail à l'aide de l'outil client.

Ouvrez à nouveau l'outil client et mettez à jour (F5) pour confirmer que le monde appelé DB a été ajouté.

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

Si les données sont saisies de cette manière, elles sont complètes.

Exécution SQL

Enfin, je voudrais exécuter uniquement une simple instruction SELECT pour terminer.

Depuis l'éditeur SQL de DBeaver

SELECT 
*
FROM 
world.city
;

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

Si le contenu est affiché, il n'y a pas de problème.

finalement

Merci d'avoir lu jusqu'au bout. Maintenant que l'environnement d'exécution des instructions SQL est en place, je souhaite continuer à apprendre. Merci beaucoup.

Recommended Posts

Apprentissage des instructions SQL ~ Construction de l'environnement ~ Docker + MySQL
Mémo de construction de l'environnement MySQL 5.7 (Docker)
[Construction de l'environnement avec Docker] Rails 6 et MySQL 8
[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8
Construire un environnement pour Laravel + MySQL + phpMyadmin avec Docker
Construction de l'environnement Rails Docker
Mémo de construction de l'environnement Redmine (Docker)
[Docker] Construction de l'environnement Rails 5.2 avec docker
Construction de l'environnement Docker × Spring Boot
[Rails / MySQL] Construction de l'environnement Mac
[Docker] postgres, construction de l'environnement pgadmin4
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Créer un environnement Node.js avec Docker Compose
Construction d'environnement avec Docker pour les débutants
Construction de l'environnement d'utilisation Laravel + Docker Laradock
Rails sur la procédure de construction de l'environnement Docker
Procédure de construction de l'environnement Docker "Rails 6 x MySQL 8" à partager avec les équipes
Construction de l'environnement GPU avec Docker [version d'octobre 2020]
Construction d'environnement de rails avec Docker (apocalypse personnelle)
Construction de l'environnement de développement Laravel avec Docker (Mac)
Sapper × Go (écho) × Construction de l'environnement de développement Docker
Construire un environnement Rails 6 + MySQL avec Docker compose
Modifier Mysql avec des commandes dans l'environnement Docker
Construction de l'environnement de développement Java Spring Boot + Docker
Rails & React & Webpacker & Manuel de construction de l'environnement MySQL
[Construction de l'environnement] Rails + MySQL + Docker (les débutants peuvent également l'utiliser en 30 minutes!)
[Construction de l'environnement Rails & Docker & MySQL] J'ai démarré le conteneur, mais je ne trouve pas MySQL ...?
[Première construction d'environnement] J'ai essayé de créer un environnement Rails6 + MySQL8.0 + Docker sur Windows 10.
[Java] Construction de l'environnement
Créer un environnement Kaggle à l'aide de Docker officiel et de vscode
Construction de l'environnement IntelliJ + Docker (APP + DB) + SpringBoot (Maven)
[Printemps] Construction de l'environnement
Procédure de construction et de développement de l'environnement local Wordpress avec Docker
[Road_node.js_1-1] La voie de la création de l'environnement Node.js Express MySQL à l'aide de Docker
Rails5 + MySQL8.0 + Construction d'environnement de volumes de premier niveau avec docker-compose
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker
Création d'un environnement de base de données avec Docker dans Spring Boot (IntellJ)
Construction d'un environnement d'analyse de données avec Docker (mémorandum personnel)
[Flutter] Construction de l'environnement Ubuntu 20.04
construction d'environnement de développement Java
Comment créer un environnement [TypeScript + Vue + Express + MySQL] avec Docker ~ Express ~