docker容器中导入数据库+修改字符编码

1. docker容器中导入数据库

docker exec -it xxxxxxxxx sh 进入mysql容器。
mysql -uroot -pxxxx 登陆
use database; 切换数据库
source /home/xxxx.sql 导入数据库文件

这种方式错误!!!

得用以下方式:

sudo docker ps //查看mysql容器id
sudo docker cp sql文件路径 mysql容器id:/ 注意 linux中后面要加上:/

再次进入mysql容器—> 切换数据库 运行 source xxxx.sql;注意这里sql文件不用加路径

2、修改mysql字符编码

今天部署若依的时候,页面出现了乱码
![(https://img-blog.csdnimg.cn/direct/dcc004ebe73e48a58570f9e69dd3550e.png)

这是因为创建数据库的时候,没有默认设置为utf8,所以采用以下方式针对docker部署的mysql进行编码调整,

一.首先进入Docker容器内部

docker exec -it Mysql ID /bin/bash

二.在Mysql容器中找到配置文件my.cnf,下面是我的路径大家可以作为参考

/etc/mysql/my.cnf

三.退出容器,将刚才所找到的配置文件复制到物理机的任意目录中,我是创建了一个/usr/local/temp的临时目录

docker cp mysql:/etc/mysql/my.cnf /usr/local/temp

四.对复制过来的文件进行vim编辑

vi /usr/local/temp/my.cnf

把下面的内容写进去:

[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake

五.将修改后文件重新复制回配置文件所在的路径下,将其覆盖

docker cp /usr/local/temp/my.cnf mysql:/etc/mysql/

六.重启Mysql

docker restart Mysql ID

七.确认是否修改成功

docker exec -it Mysql ID /bin/bash
mysql -uroot -p

输入登录密码

show variables like 'character%';

如果如下图所示,则证明修改成功

在这里插入图片描述

补充:第四步中设置的配置是什么意思呢?

1[client] 部分:
default-character-set=utf8mb4: 设置客户端默认使用的字符集为utf8mb4。

2[mysql] 部分:
default-character-set=utf8mb4: 设置MySQL命令行工具的默认字符集为utf8mb4。

3[mysqld] 部分(MySQL服务器相关配置):
init_connect='SET collation_connection = utf8mb4_general_ci': 
在每个新连接初始化时,设置连接的排序规则为utf8mb4_general_ci。这确保了连接时使用的默认排序规则。

init_connect='SET NAMES utf8mb4': 在每个新连接初始化时,设置连接的字符集为utf8mb4。
这确保了连接时使用的默认字符集。

character-set-server=utf8mb4: 设置MySQL服务器的默认字符集为utf8mb4。

collation-server=utf8mb4_general_ci: 设置MySQL服务器的默认排序规则为utf8mb4_general_ci。

skip-character-set-client-handshake: 禁用客户端/服务器握手期间的字符集检查。
这样,客户端不需要与服务器协商字符集,而是直接使用服务器配置的字符集。

参考链接:
1、https://blog.csdn.net/weixin_43431218/article/details/127683800
2、https://blog.csdn.net/m0_67503918/article/details/126574574

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值