麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
905
2023-07-05
docker安装mysql的方法是什么
快速完成
直接复制粘贴跟着做即可快速完成,可以不用查看详细步骤
docker pull mysql:5.7登录后复制登录后复制
docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7登录后复制登录后复制
cd /usr/local/mysql/conf登录后复制
vim my.cnf登录后复制
粘贴下面内容并保存
[client]default_character_set=utf8[mysqld]collation_server=utf8_general_cicharacter_set_server=utf8登录后复制
docker restart mysql登录后复制
使用工具测试(记得要打开端口),root用户密码为123456
详细步骤
首先搜索镜像
docker search mysql登录后复制
拉取镜像
搜索出来的第一个就行,不指定版本就获取最新版,我这里用5.7
docker pull mysql:5.7登录后复制登录后复制
创建容器(运行镜像)
内外都使用3306端口(确保你的宿主机3306端口没有被占用,比如你的宿主机也装了mysql),并指定root用户密码为123456
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql mysql:5.7登录后复制
进入容器
在容器内部连接mysql,创建一个数据库,测试mysql是否正常使用
docker exec -it mysql /bin/bash登录后复制
创建一个表,并插入数据,也都是ok的
本地使用连接工具连接
在本地使用Navicat工具连接,并插入记录、查询也都是没有问题的
但是,在插入中文的时候报错了
修改字符集
中文报错肯定是字符集问题了,在容器中查看字符集(客户端工具会把部分字符集处理成本地字符集),可以看到大部分都不是utf8
show variables like 'character%';登录后复制
现在mysql的配置文件还是在容器里面,并没有映射到宿主机,修改起来不是很方便,并且也不安全,容器删除就没有了
此时就需要用到容器数据卷了,不了解的可以查看上篇博文:点这里
使用容器数据卷挂载mysql数据、配置文件、日志
把上面那个容器删了,重新创建一个容器,这次命令如下
docker run -d -p 3306:3306 --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7登录后复制登录后复制
挂载三个目录,分别是日志、数据、配置文件
创建mysql的配置文件
上面已经挂载了mysql的配置文件目录,就可以直接在宿主机操作对应的目录了
在配置文件目录新建一个my.cnf配置文件,写入下面内容,设置客户端和mysql服务器端编码都为utf8
[client]default_character_set=utf8[mysqld]collation_server=utf8_general_cicharacter_set_server=utf8登录后复制
改完配置文件后,重启mysql容器,再次进入容器查看字符集,可以看到已经全部正确
再次创建库表,插入中文测试,成功插入
并且mysql的数据目录也已经挂载到本地了,就算把容器删除创新创建一个容器,也使用同样的数据卷,就可以恢复之前创建的库表。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。