docker 部署mysql8.3.0
以下内容全部来源于
https://blog.csdn.net/Weirdo_zhu/article/details/126358872?spm=1001.2014.3001.5501
一、拉取镜像
docker pull mysql:8.0.30
二、创建挂载路径
//根目录选择自身实际最大磁盘路径 一般为/home 或者定义/data
mkdir -p /data/mysql/data
mkdir -p /data/mysql/logs
mkdir -p /data/mysql/conf
三、创建配置文件my.cnf
//根目录选择自身实际最大磁盘路径 一般为/home 或者定义/data
vim /data/mysql/conf/my.cnf
//insert 插入以下内容
[mysqld]
#服务端口号 默认3306
port=3306
user=mysql
#mysql数据文件所在位置
datadir=/var/lib/mysql
#pid
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
default-time-zone = '+8:00'
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# 允许访问的IP网段
bind-address=0.0.0.0
#只能用IP地址检查客户端的登录,不用主机名
skip_name_resolve=1
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation=READ-COMMITTED
#最大连接数
max_connections=400
#最大错误连接数
max_connect_errors=1000
#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=1G
四、启动docker 容器
# -p 端口映射 3306:3306 指外部访问端口改成3306规避一些默认端口被禁情况 云服务器记得开端口
docker run --privileged=true -p 3306:3306 -m 1g --name mysql -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/var/log/mysql -v /data/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=’你的密码‘ -d mysql:8.0.30
ps:如果忘记 --restart=always 可以通过docker update --restart=always 容器名方式 修改自启动 (好像有bug,改成这个再启动就起不来了)
五、检查容器是否正常运行
#检查镜像是否正常运行
docker ps
#进入容器
docker exec -it mysql bash
#用默认密码登陆账号
mysql -uroot -p’你的密码‘
#创建账号并授权
CREATE USER '你想要的用户名'@'%' IDENTIFIED BY '你创建账号的密码';
#修改用户密码
ALTER USER '你的用户名'@'%' IDENTIFIED BY '你想修改的密码的密码';
#赋予全部权限
GRANT ALL PRIVILEGES ON *.* TO 'developer'@'%';
#刷新权限
FLUSH PRIVILEGES;