首页 > 解决方案 > 如何为 mysql 8 docker 容器启用 x 协议

问题描述

我正在尝试从文件中导入 json 数据,如下所示:https ://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-json-import-command.html

但是当我尝试这个时,
mysqlsh root@127.0.0.1:8306/mydb --import /countries.json country_staging jsondata
我得到了这个错误
ERROR: Util.importJson: An X Protocol session is required for JSON import.

但是当我尝试设置x protocol这样做时,
mysqlsh --mysqlx root@127.0.0.1:8306/mydb --import /countries.json country_staging jsondata
我得到了这个错误
MySQL Error 2027: Requested session assumes MySQL X Protocol but '127.0.0.1:8306' seems to speak the classic MySQL protocol (Unexpected response received from server, msg-id:10)

,我不知道如何解决这个问题,官方文档并没有真正说明太多。我正在为我的 docker 容器使用官方的 docker mysql:8 映像。

标签: mysqldocker

解决方案


您正在尝试连接到 MySQL Classic 协议端口 ( 8306)。您必须连接到 X 协议端口(可能正在监听端口83060)。如果您不知道您的 X 协议端口是什么,请尝试:

$ mysql -u root -h 127.0.0.1 -P 4000 -p -e "select @@mysqlx_port"
Enter password: 
+---------------+
| @@mysqlx_port |
+---------------+
|         40000 |
+---------------+

推荐阅读