Problemas y soluciones encontrados al actualizar la base de datos MySql 5.7 a 8.1

1. Antecedentes del proyecto

Después de que se expusieron la vulnerabilidad de seguridad de Oracle MySql CVE-2023-22056 y otras vulnerabilidades, nos estamos preparando para actualizar la base de datos MYSQL del sistema de 5.7 a 8.1. Este artículo presenta principalmente varios problemas durante el proceso de actualización.

2. Pasos de actualización

(1) Copia de seguridad de la base de datos

Exporte la estructura y los datos de la base de datos a través de navicat para restaurarla a la nueva versión después de la actualización.

(2) Instalar la versión MySql8.1.X

Dirección de descarga: MySQL :: Descargar MySQL Community Server

Debido a que los servicios del sistema se proporcionan a través de wamp, el plan principal es agregar la versión MySQL 8.1 sobre la base del 5.7 original, aquí necesitamos resolver el problema de mysql multiversión de wamp.

Aquí descargamos la versión del paquete comprimido de MYSQL:

Windows (x86, 64 bits), archivo ZIP 8.1.0 236,9 millones

Descargar

(mysql-8.1.0-winx64.zip)

(1) Extraiga el paquete comprimido descargado a la ruta de instalación de wamp, es decir, el directorio X:\XXX\wamp64\bin\mysql. Ya existe un directorio para 5.7.X. De manera similar, cree un directorio para 8.1.X y descomprima el paquete comprimido en él.

 (2) Modificar los parámetros de ruta relevantes

Copie los archivos my.ini y wampserver.conf en el directorio 5.7.X al directorio mysql8.1.X y cambie los parámetros en el archivo my.ini

basedir="X:/XXX/wamp64/bin/mysql/mysql8.0.11"

datadir="X:/XXX/wamp64/bin/mysql/mysql8.0.11/data"

lc-messages-dir="X:/XXX/wamp64/bin/mysql/mysql8.0.11/share"

(3) Inicializar mysql8.1.x

Ingrese al directorio bin en mysql8.1.x a través de la línea de comando cmd y ejecute el siguiente comando:

mysqld --inicializar --consola

Encontrado en la interfaz después de la ejecución: se genera una contraseña temporal para root@localhost:XXXXXX

Esta es la contraseña generada después de inicializar MySQL. La usarás para acceder a MySQL más adelante. ¡Debes copiarla aquí! ! ! !

(4) Instalar el servicio MYSQL

Si es wamp, necesita instalar el servicio en wamp y luego iniciarlo.

Si no es wamp, ejecute directamente el comando: mysqld -install en cmd y se agregará un servicio MySql al servicio del sistema operativo. Simplemente empieza.

(5) Verificación de inicio de sesión

Si es wamp, abre el menú de la consola Mysql en wamp, usa la contraseña temporal generada en (3) para iniciar sesión con el siguiente comando.

Nota: Después de iniciar sesión por primera vez, se informará el siguiente error al ejecutar el comando:

RROR 2003 (HY000): No se puede conectar al servidor MySQL en 'localhost' (10061)

Este es un recordatorio de que necesita cambiar su contraseña temporal. He aquí cómo hacerlo:

mysql> alterar usuario 'root'@'localhost' identificado por 'XXXXXXXX';

También debe ejecutar el siguiente comando para actualizar los permisos:  

mysql> privilegios de vaciado;

Después de cambiar, use el comando: mysql> show bases de datos;

Si ve el resultado, indica éxito.

(3) Restaurar base de datos

Agregue una base de datos en el nuevo MYSQL y ejecute el sql exportado en (1) bajo los nuevos datos.

Si hay procedimientos o funciones almacenados en la base de datos, es posible que la ejecución no sea exitosa. En este caso, debe agregar: log_bin_trust_function_creators=1 a [mysqld] en my.ini, reiniciar el servicio y luego importarlo nuevamente.

(4) Base de datos de conexión del sistema

Después de configurar los permisos de usuario, host y base de datos, el sistema accede a la base de datos a través de programas. En este momento, el sistema tendrá los siguientes problemas:

1.Problema de discrepancia en el conjunto de caracteres

系统报错:SQLSTATE[HY000] [2054] El servidor envió un conjunto de caracteres desconocido para el cliente. Por favor, informe a los desarrolladores.

Motivo: el conjunto de caracteres predeterminado de MySQL 8 es utf8mb4 y el sistema usa utf8;

Solución: debe agregar las siguientes dos líneas en [mysqld] en el archivo my.ini:

servidor-conjunto-de-caracteres = utf8mb4

servidor de intercalación = utf8mb4_unicode_ci

2. Problemas de autenticación de identidad

系统报错:SQLSTATE[HY000] [2054] El servidor solicitó un método de autenticación desconocido para el cliente

Motivo: debido a que el tipo de autenticación del usuario (tipo de autenticación) en MySQL8 de forma predeterminada es almacenar en caché la contraseña sha2, se produce el error. El método de autenticación de permisos del usuario debe modificarse al método de autenticación de mysql_native_password.

Solución: Se ejecutan dos pasos (1) en la consola MYSQL:

mysql>alterar usuario 'root'@'%' identificado con mysql_native_password por 'XXXXXXXX';

mysql>privilegios de vaciado;

(2) Agregar en [mysqld] en el archivo my.in

default_authentication_plugin=contraseña_nativa_mysql

 

Supongo que te gusta

Origin blog.csdn.net/hongdi/article/details/131995416
Recomendado
Clasificación