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.
.
├── 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. 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.
Cette fois, nous utiliserons MySQL, alors sélectionnez MySQL.
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
Vous pouvez vous connecter comme suit.
Cliquez sur le bouton de fin pour terminer.
MySQL fournit officiellement des exemples de données. Je voudrais le verser et l'utiliser pour étudier. Exemples de données MySQL appropriés
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.
Ouvrez à nouveau l'outil client et mettez à jour (F5) pour confirmer que le monde appelé DB a été ajouté.
Si les données sont saisies de cette manière, elles sont complètes.
Enfin, je voudrais exécuter uniquement une simple instruction SELECT pour terminer.
Depuis l'éditeur SQL de DBeaver
SELECT
*
FROM
world.city
;
Et courir
Si le contenu est affiché, il n'y a pas de problème.
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