User Tools

Site Tools


codificacion_utf-8_en_mysql

Codificación UTF-8 en MySQL

Comprobar codificación actual en el servidor MySQL

mysql -uXXXX -pXXXX  -e  "show variables like 'char%';" -e "show variables like 'collation%';"

Salida de un servidor MySQL con codificación UTF-8.

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | utf8                       |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+

Editar la configuración del servicio MySQL para usar codificación UTF-8

A continuación se listan las variables que definen la codificación del servidor MySQL en el fichero /etc/my.cnf.

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
character-set-filesystem=UTF8

[client]
default-character-set=UTF8

[mysqldump]
default-character-set=UTF8

Mostrar colaciones y conjuntos de caracteres de las tablas en uso

  • Conjunto caracteres: Listado de caracteres con su código identificativo.
  • Colación: Conjunto de reglas para comparar caracteres en un juego de caracteres dado.

Se propone a continuación una lista de comandos para encontrar información sobre la codificación de bases de datos, tablas y columnas en MySQL. Como se verá, hay varias formas de obtener la misma información.

Listar todos los conjuntos de caracteres disponibles en el servidor MySQL instalado. (Listado completo)

SHOW CHARACTER SET;

Listar las colaciones de los conjuntos de caracteres MySQL.

SHOW COLLATION;
# Si queremos el listado de colaciones para un juego de caracteres determinado.
SHOW COLLATION LIKE 'UTF8%';

Muestra el juego de caracteres y colación de todas las bases de datos MySQL.

SELECT SCHEMA_NAME,default_character_set_name,DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA;

Muestra la colación de todas las tablas de una determinada base de datos en MySQL.

SHOW TABLE STATUS FROM XXXX

Muestra el juego de caracteres y la colación de todas las tablas de una determinada base de datos en MySQL.

SELECT TABLE_NAME,CHARACTER_SET_NAME,COLLATION_NAME
FROM information_schema.`TABLES` T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "XXXX";

Muestra la colación de cada campo una tabla en concreto en MySQL.

SHOW CREATE TABLE XXXX

Muestra el juego de caracteres y la colación de todos los campos una tabla en concreto en MySQL.

SELECT COLUMN_NAME,CHARACTER_SET_NAME,COLLATION_NAME FROM information_schema.`COLUMNS` C
WHERE table_schema = "XXXX"
AND table_name = "XXXX";

Cifrado AES en MySQL

Cifra un “TEXTO” mediante la clave “PASSWORD”.

INSERT INTO tabla VALUES(AES_ENCRYPT('TEXTO', 'PASSWORD'));

Descifra un “TEXTO” de la “COLUMNA” mediante la clave “PASSWORD”.

SELECT AES_DECRYPT(COLUMNA, 'PASSWORD') FROM tabla;

Guardar y usar la password de cifrado en una variable.

SELECT @variable:='password';
INSERT INTO tabla VALUES (AES_ENCRYPT('TEXTO',@variable));
codificacion_utf-8_en_mysql.txt · Last modified: 2020/12/25 22:57 by 127.0.0.1