公司新项目后台使用了mysql8.0函数,服务器老项目使用的mysql5.6,为了不影响老项目的使用,决定采用docker部署mysql8.0。
1.首先在服务器中建立mysql配置文件夹和数据库文件夹
mkdir -p /opt/docker/mysql8/conf
mkdir -p /opt/docker/mysql8/data
以上目录根据个人习惯可自定义,我喜欢安装在opt目录中。
2.创建my.cnf配置文件
vi /opt/docker/mysql8/conf/my.cnf
在my.cnf添加以下内容:
[mysqld]
datadir=/opt/docker/mysql8/data
#socket=/opt/docker/mysql8/mysql.sock
wait_timeout = 604800
interactive_timeout = 604800
event_scheduler = 1
character-set-server=utf8mb4
max_connections=10240
max_connect_errors=10240
lower_case_table_names=1
secure-file-priv=NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/opt/mysql8/mysql.log
pid-file=/opt/mysql8/mysql.pid
#
# include all files from the config directory
#
!includedir /etc/mysql/conf.d
在docker中不能创建socket文件并且secure-file-priv要设置为NULL,不然启动会报错。
3.拉取mysql8.0 镜像
docker pull mysql:latest
4.运行mysql8.0
docker run --name mysql8.0 --restart=unless-stopped -it -p 3307:3306 -v /opt/docker/mysql8/conf/my.cnf:/etc/mysql/my.cnf -v /opt/docker/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
-v:软连接我们刚刚建立的配置文件目录
-p:宿主机映射出的端口,宿主机已经有3306了,这边改为3307
--restart=unless-stopped:在docker出现问题后默认重启
5.进入mysql修改ip访问权限和密码
(1)进入容器内部
docker exec -it mysql8.0 /bin/bash
(2)登录mysql并修改权限密码
mysql -u root -p
use mysql
update user set host='%' where user ='root';
update user set plugin='mysql_native_password' where user ='root';
flush privileges;
grant all on *.* to 'root'@'%';
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
flush privileges;
退出镜像,如果没有开启防火墙就可以进行连接了,如果开启了防火墙进行第六步。
6.修改防火墙规则
firewall-cmd --permanent --zone=public --add-port=3307/tcp
firewall-cmd --reload
以上就是docker部署mysql流程。