Aller au contenu | Aller au menu | Aller à la recherche


MySQL client données des colonnes blob affichée en hexa au lieu de string - binary-as-hex - skip-binary-as-hex

Avec le client MySQL, les données de type blob sont par défaut affichée en hexa au lieu de string.

MySQL client donnees hexa string

string-functions::char

If CHAR() is invoked from within the mysql client, binary strings display using hexadecimal notation, depending on the value of the --binary-as-hex.

mysql-command-options::option_mysql_binary-as-hex

--binary-as-hex (Display binary values in hexadecimal notation)

To disable hexadecimal notation, use --skip-binary-as-hex

When this option is given, mysql displays binary data using hexadecimal notation (0xvalue). This occurs whether the overall output display format is tabular, vertical, HTML, or XML.

describe mysql.general_log;
+--------------+-----------------+------+-----+----------------------+--------------------------------------------------+
| Field        | Type            | Null | Key | Default              | Extra                                            |
+--------------+-----------------+------+-----+----------------------+--------------------------------------------------+
| event_time   | timestamp(6)    | NO   |     | CURRENT_TIMESTAMP(6) | DEFAULT_GENERATED on update CURRENT_TIMESTAMP(6) |
| user_host    | mediumtext      | NO   |     | NULL                 |                                                  |
| thread_id    | bigint unsigned | NO   |     | NULL                 |                                                  |
| server_id    | int unsigned    | NO   |     | NULL                 |                                                  |
| command_type | varchar(64)     | NO   |     | NULL                 |                                                  |
| argument     | mediumblob      | NO   |     | NULL                 |                                                  |
+--------------+-----------------+------+-----+----------------------+--------------------------------------------------+

Pour voir si l'option "binary-as-hex" est activée, on peut utiliser la commande "status" ou "\s" :

Si c'est activé (par défaut depuis MySQL 8.0.19), on voit la ligne : "Binary data as: Hexadecimal"

mysql

> \s
--------------
mysql  Ver 8.0.28 for Win64 on x86_64 (MySQL Community Server - GPL)

Connection id:          19037
Current database:       xxx
Current user:           user_xxx@192.168.1.1
SSL:                    Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Using delimiter:        ;
Server version:         8.0.25 MySQL Community Server - GPL
Protocol version:       10
Connection:             192.168.1.1 via TCP/IP
Server characterset:    utf8mb3
Db     characterset:    latin1
Client characterset:    cp850
Conn.  characterset:    cp850
TCP port:               3306
Binary data as:         Hexadecimal
Uptime:                 18 hours 24 min 20 sec

Threads: 8  Questions: 313771  Slow queries: 0  Opens: 2586  Flush tables: 3  Open tables: 1645  Queries per second avg: 4.735
--------------

SELECT argument FROM mysql.general_log;
+--------------------------------------------------------------------------------------------------------------------+
| argument                                                                                                           |
+--------------------------------------------------------------------------------------------------------------------+
| 0x53454C45435420706173732046524F4D207574696C69736174657572205748455245207574696C69736174657572203D2027636872697327 |
+--------------------------------------------------------------------------------------------------------------------+

mysql --skip-binary-as-hex

> \s
--------------
mysql  Ver 8.0.28 for Win64 on x86_64 (MySQL Community Server - GPL)

Connection id:          9693
Current database:       xxx
Current user:           user_xxx@192.168.1.1
SSL:                    Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Using delimiter:        ;
Server version:         8.0.25 MySQL Community Server - GPL
Protocol version:       10
Connection:             192.168.1.1 via TCP/IP
Server characterset:    utf8mb3
Db     characterset:    latin1
Client characterset:    cp850
Conn.  characterset:    cp850
TCP port:               3306
Uptime:                 9 hours 33 min 10 sec

Threads: 6  Questions: 146336  Slow queries: 0  Opens: 453  Flush tables: 3  Open tables: 372  Queries per second avg: 4.255
--------------

SELECT argument FROM mysql.general_log;
+----------------------------------------------------------+
| argument                                                 |
+----------------------------------------------------------+
| SELECT pass FROM utilisateur WHERE utilisateur = 'chris' |
+----------------------------------------------------------+

Alternativement on peut utiliser CAST/CONVERT sans l'option "--skip-binary-as-hex"

SELECT CONVERT(argument USING utf8) FROM mysql.general_log;
+----------------------------------------------------------+
| CONVERT(argument USING utf8)                             |
+----------------------------------------------------------+
| SELECT pass FROM utilisateur WHERE utilisateur = 'chris' |
+----------------------------------------------------------+

MySQL CLI Client shows data as Hex

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet