Diferència entre revisions de la pàgina «Docker al mòdul DAM-M02»

De wikijoan
Salta a la navegació Salta a la cerca
Línia 137: Línia 137:
 
[[Fitxer:Workbench docker HR.png | thumbnail]]
 
[[Fitxer:Workbench docker HR.png | thumbnail]]
 
Necessitem saber quina és la IP que exposa el docker a la nostra màquina local.
 
Necessitem saber quina és la IP que exposa el docker a la nostra màquina local.
 +
<pre>
 +
$ docker ps
 +
CONTAINER ID        IMAGE               
 +
242534ba574d        joan/mysql_m02bd:5.0
 +
 +
$ docker inspect mysql_m02bd
 +
...
 +
"Gateway": "172.17.0.1",
 +
"IPAddress": "172.17.0.2",
 +
...
 +
</pre>
 +
Configuració per connectar-se a la base de dades de municipis:
 
<pre>
 
<pre>
 
hostname: 172.17.0.2
 
hostname: 172.17.0.2
Línia 145: Línia 157:
 
</pre>
 
</pre>
 
Funciona correctament.
 
Funciona correctament.
 +
 +
Per configurar el '''TablePlus''' es fa de forma similar. L'avantatge del ''TablePlus'' és que és per connectar-se al PostgeSQL i altres bases de dades (a part del MySQL).
  
 
{{Autor}}, novembre 2021
 
{{Autor}}, novembre 2021

Revisió del 11:40, 16 nov 2021

Instal·lació de Docker

Instal·lació a Linux

Instal·lació a Windows

Docker del mòdul: mysql_m02bd v5

Descàrrega de dockerhub

El docker (contenidor) que farem servir a l'assigntura està documentat a:

Concretament és la versió 5:

En aquesta versió 5 es pot entrar directament amb l'usuari alumne (password: keil2Lai), i tenim 10 bases de dades per treballar a classe:

  • HR
  • municipis
  • langtrainer
  • empresa
  • sakila
  • northwind
  • mysqlsampledatabase
  • categories_bikeshop
  • vestuari

englishresources

El docker que farem servir està pujat al núvol (dockerhub), i s'anomena joanillo/mysql_m02bd:5.0.

Així doncs, després d'instal·lar el Docker a la teva màquia (Linux o Windows o Mac), hem de baixar el contenidor del dockerhub:

$ docker pull joanillo/mysql_m02bd:5.0
a21d4bfd3284: Pull complete 
Digest: sha256:2b48d332cece8ba8d2e256537427c3d26d18c28dc6732913032a57d5df9bde03
Status: Downloaded newer image for joanillo/mysql_m02bd:5.0
docker.io/joanillo/mysql_m02bd:5.0

Engego aquest contenidor i l'executo

$ docker run --name=mysql_m02bd -d joanillo/mysql_m02bd:5.0
267f094d20f3142ab89484a1919e1193fffbd2e53882ded31f80031005336707

El contenidor està funcionant:

$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                             PORTS                       NAMES
e593408e5541        joan/mysql_m02bd:5.0   "/entrypoint_v5.sh m…"   14 seconds ago      Up 13 seconds (health: starting)   3306/tcp, 33060-33061/tcp   mysql_m02bd

Per mirar els logs:

$ docker logs mysql_m02bd
...
2021-11-15T17:05:34.128903Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2021-11-15T17:05:34.129065Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.27'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server - GPL.

Recordar! No puc entrar amb l'usuari alumne fins que no em surti ready for connections (abans s'estan executant els scripts, i els privilegis de l'usuari alumne no es fan fins al final)

$ docker exec -it mysql_m02bd mysql -alumne -pkeiL2lai
mysql>

I ara ja sóc dins i ja puc iniciar una sessió. Per a Windows el procés és el mateix, però també puc utilitzar la interfície gràfica que se'ns proporciona.

Sessió a la consola de mysql

$ docker exec -it mysql_m02bd mysql -u alumne -pkeiL2lai

mysql> show databases

He de comprovar que tinc les 10 bases de dades.

mysql> use HR; -> per utilitzar la base de dades HR
mysql> show tables; -> per veure les taules de la base de dades HR
mysql> desc employees; -> per veure els camps de la taula employees;
mysql> select * from employees; -> ja podem fer consultes i comandes SQL

Si vull entrar directament a una base de dades podem fer:

$ docker exec -it mysql_m02bd mysql -u alumne -pkeiL2lai municipis
o bé
$ docker exec -it mysql_m02bd mysql -u alumne -pkeiL2lai -D municipis

NOTA: el que no podem fer és:

$ docker exec -it mysql_m02bd mysql -u alumne -p keiL2lai municipis

No pot haver-hi un espai en blanc entre la p i el password (doncs es pensaria que hi ha la base de dades anomenada keiL2lai)

NOTA: també existeix el paràmetre -P (majúscula): port, que és el port TCP de connexió del mysql, que per defecte és el 3306:

$ docker exec -it mysql_m02bd mysql -h localhost -P 3306 -u alumne -pkeiL2lai municipis

També hem utilitzat -h localhost per indicar que el servidor mysql s'està executant en la màquina local (ja veiem que per defecte és opcional). En resum, hi ha molts paràmetres que els anirem veient poc a poc (i no cal veure'ls tots). Pots provar-ho fent:

Sessió a la consola de Linux, i entrar al mysql com a root

En el nostre docker podem entrar directament a la consola:

$ docker exec -it mysql_m02bd mysql /bin/bash
#

Estem en una sessió de Linux.

Recordem que el SGBD MySQL té una arquitectura client-servidor. D'una banda tenim el servidor, el dimoni (mysql-server), i d'altra banda tenim clients que es poden connectar al servidor. Concretament, quan escrivim mysql en la consola, ens estem referint al client de mysql de la consola (és a dir, l'aplicatiu bàsic de consola que fem servir per connectar-nos a un servidor). Per veure totes les opcions:

# man mysql

Aquí podem veure les opcions que ja hem fet servir, i moltes més (en farem servir algunes més quan calgui).

I des de la consola podem entrar al mysql, similar a com hem fet abans:

# mysql -u alumne -pkeiL2lai municipis
mysql> select count(*) from municipis;
mysql> exit
#

Fins ara hem entrat al mysql amb l'usuari alumne, que té permisos sobre les 10 bases de treball que farem servir.

També podem entrar amb l'usuari root, però el primer que s'haurà de fer és saber quin és el password actual, i l'haurem de canviar. (TBD)

Sessió amb mysql-workbench

Instal·lació mysql-workbench-community a Linux

Provat a Linux Mint (juliol 2021)

(prèviament hem d'instal·lar snap)

Queda ben instal·lat, però no puc connectar-me a la bd. Per solucionar-ho:

$ snap connect mysql-workbench-community:password-manager-service
$ snap connect mysql-workbench-community:ssh-keys

$ mysql-workbench-community

Ja funciona

Instal·lació mysql-workbench a Windows

Descarrego:

  • mysql-workbench-community-8.0.27-winx64.exe

Necessita Visual C++ 2019 Redistributable package Descarrego i instal·lo:

  • VC_redist.x64.exe

I llavors ja queda ben instal·lat

Configuració mysql-workbench per connectar-se al docker

Workbench docker HR.png

Necessitem saber quina és la IP que exposa el docker a la nostra màquina local.

$ docker ps
CONTAINER ID        IMAGE                
242534ba574d        joan/mysql_m02bd:5.0

$ docker inspect mysql_m02bd
...
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
...

Configuració per connectar-se a la base de dades de municipis:

hostname: 172.17.0.2
Port: 3306
username: alumne
password: keiL2lai
default schema: municipis

Funciona correctament.

Per configurar el TablePlus es fa de forma similar. L'avantatge del TablePlus és que és per connectar-se al PostgeSQL i altres bases de dades (a part del MySQL).


creat per Joan Quintana Compte, novembre 2021