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字符编码
今天部署若依的时候,页面出现了乱码
这是因为创建数据库的时候,没有默认设置为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