最近公司测试服务器要迁移,而且是报废式迁移,北京的服务器全部不再使用,位于北京测试机器上的服务和数据库需要自己重新搭建到上海的测试服务器去。。。。关于服务器其他的相关配置在之前的docker文章中已陆续记录,本次只单独记录docker中安装配置mysql,为了保证系统的稳定与兼容,仍然使用旧版本mysql5.7.18。

系统环境:centos 7.6.1810 (Core)

image版本:mysql:5.7.18 (该版本显示5年前已停止更新)

安装步骤参考文章:https://www.cnblogs.com/shisanye/p/15685263.html

 

1、拉取镜像:https://hub.docker.com/_/mysql?tab=tags&page=1&name=5.7.18

docker pull mysql:5.7.18

 

2、创建主宿机映射目录

mkdir -p /data/docker_container/mysql5.7.18 #配置文件映射
mkdir -p /data/docker_container/mysql5.7.18/data #数据文件映射

 

3、随便运行一个容器,然后将里面的配置方便拷出来

docker run -di --name=mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.18
docker cp mysql_test:/etc/mysql /data/docker_container/mysql5.7.18

 

4、删掉这个要拷的docker

docker stop mysql_test
docker rm mysql_test

 

5、运行容器

docker run -dit --name mysql_test -p 3306:3306 --restart=always -e TZ="Asia/Shanghai" -v /data/docker_container/mysql5.7.18/mysql:/etc/mysql -v /data/docker_container/mysql5.7.18/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root2022 mysql:5.7.18

网上的文章大多没有设置 --restart=always -e TZ="Asia/Shanghai",导致mysql无法开机自启动,并且时间不是中国时间会慢8小时。

 

别的文章介绍还要修改root初始密码和连接权限什么的,但我发现安装完成后直接用navicat就可以远程连接,无需其它配置,不知道是为什么。后面有问题再来记录。

 

然后我们创建新用户并赋予权限即可,这里我们假设赋予账号全部权限且全部地址可以访问:

grant all privileges on *.* to '你的账号'@'%' identified by '你们密码' with grant option;
flush privileges;

 


 

 

以上运行没问题了,但是使用后会发现一些配置问题需要修改,比如group_concat长度限制,中文乱码等问题。

网上查资料发现很乱,而且各个版本之间差别很大,不同服务器之间也有差异,本文仅说明tencos7.* 下docker mysql5.7.18对应配置文件。

上面我们已经把配置文件夹映射到本地了,只需要修改本地配置文件即可。

在很早的版本(或者是windows版本)中可能配置的是my.ini文件,而直接在linux安装mysql当前的版本(非docker中)对应的配置文件是my.conf文件,而我们在docker中的配置文件发现映射到本地后的my.cnf文件无法修改,通过ll(或ls -l)可看到my.cnf文件是红色的,根据该问答(https://developer.aliyun.com/ask/129850?spm=a2c6h.13159736)说是因为软连接的原因。然后最终发现/etc/mysql/mysql.conf.d/mysqld.conf 文件为真正的可修改配置文件。

 

以下为配置/etc/mysql/mysql.conf.d/mysqld.conf 映射文件的简单配置,其他配置可以继续添加修改:

[mysqld]
#...其它配置内容

#设置group_concat限制长度 group_concat_max_len
= 18446744073709551615 #设置字符集 character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4

 

 

参考文章:

修改docker中mysql配置文件:https://www.cnblogs.com/lambdadog/p/15473596.html

彻底修改中文乱码问题:https://blog.csdn.net/u012410733/article/details/61619656

 

相关文章:

  • 2022-12-23
  • 2021-12-07
  • 2021-10-28
  • 2021-12-26
  • 2021-08-07
  • 2021-09-14
猜你喜欢
  • 2021-07-12
  • 2022-01-05
  • 2022-12-23
  • 2021-12-26
  • 2021-07-08
  • 2022-02-15
  • 2022-12-23
相关资源
相似解决方案