前言:
由于鲲鹏云是arm架构,公司现有的镜像就用不了,为了搭建个测试环境,记录一下搭建过程
注意在mysql8.0里面lower-case-table-names必须在第一次安装时设置。
①镜像的获取
鲲鹏镜像pull下来是不能跑的,会提示内核不支持
直接通过run命令让它自己选镜像(就是会选最新的)
docker run --name mysqlkssp -d -p 3306:3306 mysql/mysql-server
②拷贝一份配置文件到宿主机目录
mkdir -p /docker/mysql docker cp mysqlkssp:/etc/ /docker/mysql/ mkdir -p /docker/mysql/data #docker cp mysqlkssp:/var/lib/mysql/ /docker/mysql/data/ #不用执行,只是告诉你目录在/var/lib/mysql/ |
这样就得到了一个宿主机的目录/docker/mysql/etc/
③删掉这个容器,这样我们就得到了一个全新的镜像,跟配置文件
docker rm -f mysqlkssp
④启动容器
docker run -di --name=mysql8.0 -p 13306:13306 -e MYSQL_ROOT_PASSWORD=Kingdom123 -v /docker/mysql/etc:/etc -v /docker/mysql/data:/var/lib/mysql mysql/mysql-server --lower-case-table-names=1 |
⑤进去容器创建用户
ps:很重要,不然你登都登不上,这里相比mysql5.7特殊,需要自己来
docker exec -it mysql8.0 /bin/bash
登录 mysql -u root -p Kingdom123 |
use mysql;
select host, user, authentication_string, plugin from user;
update user set host='%' where user='root';
增加用户并刷新权限 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Kingdom123'; FLUSH PRIVILEGES; |
⑥配置my.cnf
cd /docker/mysql/etc vim my.cnf |
skip-host-cache skip-name-resolve datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock secure-file-priv=/var/lib/mysql-files user=mysql port = 13306 sql_mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" default-time_zone = '+8:00' lower_case_table_names=1 pid-file=/var/run/mysqld/mysqld.pid |
lower_case_table_names看前言部分,这里配上是为了可读性,告知后来人而已,重启docker容器:
docker restart 容器id
⑦客户端登录
show Variables like '%table_names';