萌萌の初音
萌萌の初音
发布于 2021-12-02 / 732 阅读
0

CentOS使用docker部署mysql8

公司新项目后台使用了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流程。