Este directorio de artículos
- 1. Tire de la imagen de MySQL
- 2. Crea y ejecuta un contenedor MySQL
- 3. Verifique que el contenedor MySQL se haya creado y se esté ejecutando correctamente
- 4. MySQL permite el acceso remoto
- 5. El servidor configura el puerto abierto de 3306
- 6. Ver IP de Ubuntu
- 7. Posibles problemas
- 8. Prueba de conexión de Navicat a MySQL
1. Tire de la imagen de MySQL
Lista de espejos antes de sacar el espejo de MySQL:
- La imagen de MySQL se puede extraer con el siguiente comando:
docker pull mysql
Esto descargará la última versión de la imagen MySQL en la máquina virtual.
2. Crea y ejecuta un contenedor MySQL
docker run --name=mysql-test -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123456 -d mysql
Descripción de parámetros:
- –name: especifica el nombre del contenedor, lo cual es conveniente para ingresar la línea de comando del contenedor más adelante.
- -itd: entre ellos, i es una operación interactiva, t es una terminal y d se refiere a la ejecución en segundo plano.
- -p: significa generar un puerto aleatorio localmente para mapear
mysql
el puerto 3306. - -e: Establecer variables de entorno.
- MYSQL_ROOT_PASSWORD=root123456:
root
se especifica la contraseña de MySQL. - -d mysql: se refiere a ejecutar
mysql
la imagen, configurando el contenedor para que se ejecute en segundo plano todo el tiempo.
Ejecute la captura de pantalla:
[Conocimientos complementarios]:
En Docker, -e
las variables de entorno se pueden configurar mediante parámetros. Las variables de entorno son valores de configuración que afectan el comportamiento de tiempo de ejecución de un contenedor. Estos valores se pueden usar dentro del contenedor, por ejemplo, al acceder a una base de datos en una aplicación, puede usar variables de entorno para especificar la información de conexión de la base de datos.
Estos son algunos -e
ejemplos cuando se ejecutan contenedores Docker con el parámetro:
-
Establecer variables de entorno individuales:
docker run -e VAR_NAME=VAR_VALUE image_name
VAR_NAME
Esto establecerá una variable de entorno nombrada en el contenedor con un valor deVAR_VALUE
. -
Establecer múltiples variables de entorno:
docker run -e VAR1_NAME=VAR1_VALUE -e VAR2_NAME=VAR2_VALUE image_name
VAR1_NAME
Esto establecerá dos variables de entorno y en el contenedorVAR2_NAME
con valores correspondientes aVAR1_VALUE
y respectivamenteVAR2_VALUE
. -
Establecer desde el archivo de variables de entorno:
docker run --env-file env_file_name image_name
env_file_name
es un archivo que contiene pares clave-valor de variables de entorno. Cada fila debe contener un par clave-valor, por ejemploVAR_NAME=VAR_VALUE
, . Docker leerá los pares clave-valor en el archivo y establecerá las variables de entorno correspondientes en el contenedor.
Al establecer variables de entorno, puede configurar varios parámetros requeridos por la aplicación en el contenedor, como cadenas de conexión de base de datos, claves API, etc. Esto facilita la implementación de contenedores en diferentes entornos sin codificar la configuración de la aplicación.
3. Verifique que el contenedor MySQL se haya creado y se esté ejecutando correctamente
docker ps
3.1 Ingresar al contenedor MySQL
docker exec -it mysql-test /bin/bash
3.2 Ingresar MySQL
mysql -uroot -p
Enter password:root123456
3.3 Ver host y usuario
select host,user from mysql.user;
- Asegúrese de que
root
eso signifique que puede conectarse de forma remota.host
%
4. MySQL permite el acceso remoto
4.1 Cambiar base de datos
Nota: Este debería ser el valor predeterminado, está bien si no cambias, solo cámbialo para estar seguro
use mysql;
4.2 Asignar privilegios de acceso remoto al usuario raíz
GRANT ALL PRIVILEGES ON *.* TO root@'%' WITH GRANT OPTION;
Descripción de parámetros:
- CONCEDER: otorgar comando
- TODOS LOS PRIVILEGIOS: todos los privilegios del usuario actual
- ENCENDIDO: preposición
- . : la autoridad de operación correspondiente del usuario actual en todas las bases de datos y tablas
- A: preposición
- 'root'@'%': la autoridad se asigna al
root
usuario, todas las ip pueden conectarse - CON OPCIÓN DE SUBSIDIO: permitir subvenciones en cascada
4.3 Forzar permisos de actualización
FLUSH PRIVILEGES;
5. El servidor configura el puerto abierto de 3306
-
Abra el puerto 3306 en la máquina virtual para permitir las conexiones entrantes a MySQL. Puede usar el siguiente comando para permitir las conexiones entrantes a través del firewall:
ufw allow 3306
6. Ver IP de Ubuntu
# 查看 IP 地址
ip addr
# 也可以用这个命令
ifconfig
7. Posibles problemas
- Capturas de pantalla de posibles problemas :
- La razón del problema :
Esto se debe a que la regla de cifrado de contraseña anterior a MySQL8 es mysql_native_password
, y la regla de cifrado posterior a MySQL8 es caching_sha2_password
, es decir, si desea usar Navicat para conectarse a MySQL, solo necesita volver a cambiar la regla de contraseña a mysql_native_password
;
- La solución es la siguiente :
7.1 Entrar en la base de datos MySQL
docker exec -it mysql-test /bin/bash
mysql -uroot -p
Enter password:root123456
7.2 Seleccionar base de datos
use mysql;
7.3 Cambiar el método de cifrado de contraseña
IDENTIFICADO POR 'root123456': Ingrese la contraseña al conectarse, la contraseña es root123456
ALTER USER 'root'@'%' IDENTIFIED BY 'root123456' PASSWORD EXPIRE NEVER;
7.4 Actualizar contraseña de usuario
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123456';
7.5 Actualizar permisos
FLUSH PRIVILEGES;
Ejecute la captura de pantalla:
8. Prueba de conexión de Navicat a MySQL
En este punto, Docker instala MySQL y se conecta con Navicat ¡finaliza oficialmente!