简介
- 两个月前在docker安装的mysql一直没有使用,昨天晚上使用的时候发现命令行查询sql中文会显示乱码,
- 这是一篇转载排版优化文章
说明
- 因为在容器里面没有 vi 命令所以我们可以将 数据 和 配置 挂载在宿主机上,方便我们操作
一、在tmp下创建文件夹
在 c o n f 文件夹内建立 h m y . c n f 文件 \color{blue}{在conf文件夹内建立hmy.cnf文件} 在conf文件夹内建立hmy.cnf文件
/usr/local/mysql/data
/usr/local/mysql/conf/hmy.cnf
( l i n u x 中软件应该安装在“ u s r / l o c a l ”文件夹下 ) \color{green}{(linux中软件应该安装在“usr/local”文件夹下)} (linux中软件应该安装在“usr/local”文件夹下)
二、将下文写入到hmy.cnf文件中
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000
[mysql]
default-character-set = utf8
[mysql.server]
default-character-set = utf8
[mysqld_safe]
default-character-set = utf8
[client]
default-character-set = utf8
三、建立mysql容器
docker run -p 3306:3306 --name mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/logs:/etc/mysql/logs \
-v /usr/local/mysql/data:/etc/mysql/data \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.28 --lower_case_table_names=1
这一句就是映射配置: -v /usr/local/mysql/conf:/etc/mysql/conf.d
linux下mysql表明默认是区分大小写的,这一句是忽略表名大小写(一定要放在最后面): --lower_case_table_names=1
-e TZ=Asia/Shanghai 这一句是解决时区少8小时问题
(如果你已经执行了容器命令,也可以通过下面方式解决)
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器id:/etc/localtime
docker restart 容器id
最后进入mysql容器输入'date'验证是否修改成功
四、测试
1、进入mysql容器
docker exec -it mysql bash
2、连接mysql
mysql -u root -p
成功
\color{green}{成功}
成功