以在docker上安装MySQL8.0.32为例
准备工作
新增以下文件夹
mkdir /usr/local/docker/mysql/conf
mkdir /usr/local/docker/mysql/data
mkdir /usr/local/docker/mysql/log
在conf目录新增my.cfg配置文件
cd /usr/local/docker/mysql/conf
touch my.cfg
vi my.cfg
按“i”键键入编辑模式
输入以下内容
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
#服务端口号 默认3306
port=3306
datadir = /work/docker/mysql/data
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 最大连接数
max_connections=300
# 连接失败的最大次数。防止有人从该主机试图攻击数据库系统
max_connect_errors=15
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
准备工作完毕 end
ready
开始安装MySQL8.0.32
-
去docker镜像仓库拉取mysql镜像
docker镜像仓库地址:https://hub.docker.com/_/mysql/tags
推荐方法:使用docker命令直接拉取docker pull mysql:8.0.32
-
检查mysql镜像是否拉取成功
docker images
如下代表拉取成功
-
启动mysql容器
docker run -p 3306:3306 --name mysql8 --privileged=true -v /usr/local/docker/mysql/log:/var/log/mysql -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root123456 -itd 4f06b49211c0
-p 设置docker容器映射端口
–name 设置docker容器名称
–privileged=true 设置MySQL 的root用户权限, 否则外部不能使用root用户登陆,true为允许root登录
-v /usr/local/docker/mysql/log:/var/log/mysql 挂载mysql日志节点
-v /usr/local/docker/mysql/data:/var/lib/mysql 挂载mysql数据节点
-v /usr/local/docker/mysql/conf:/etc/mysql/conf.d 挂载mysql服务配置文件节点
-e MYSQL_ROOT_PASSWORD=root123456 设置mysql数据库root用户初始密码
忘记设置mysql容器跟随docker自启动,可以使用如下命令解决:
docker update --restart=always 容器名称
docker update --restart=always mysql8
--restart=always 设置mysql容器跟随docker自启动
批量设置 docker update --restart=always $(docker ps -aq)
-
验证MySQL容器是否启动成功
docker ps
-
使用exec命令打开新的mysql终端,防止exit退出容器
docker exec -it mysql8 /bin/bash
-
连接mysql
mysql -u root -p 输入root密码:root123456
-
修改访问主机以及密码
ALTER USER 'root'@'%' IDENTIFIED BY 'root123456';
-
刷新权限
FLUSH PRIVILEGES;
在docker中安装配置MySQL容器完毕
end
设置mysql可以外网访问
-
开启云服务器防火墙端口
例如:腾讯云
-
开启centos防火墙
systemctl start firewalld
-
查看防火墙是否启动成功
systemctl status firewalld
-
查询防火墙已开放端口
firewall-cmd --list-all
-
添加3306端口到防火墙
firewall-cmd --add-port=3306/tcp --permanent
-
重载防火墙
firewall-cmd --reload
-
再次查看防火墙已开放端口,检查3306端口是否开启成功
firewall-cmd --list-all firewall-cmd --permanent --query-port=3306/tcp
- 使用本地MySQL管理工具比如:navicat、tableplus等,验证连接mysql数据库
设置mysql容器外网访问完毕
end