docker安装mysql8.0+

1.docker仓库找到需要的镜像版本

镜像仓库

在这里插入图片描述

2.安装Mysql镜像

  1. 找到所要安装的镜像版本,复制命令

  2. 输入命令,下载Mysql镜像

命令作用
docker pull mysql:latest拉取最新的mysql镜像
docker pull mysql:XXX拉取版本号为XXX的mysql镜像

镜像拉取成功后,输入 docker images 查看镜像是否存在

在这里插入图片描述

查看mysql latest最新版本,具体是哪个版本?

命令作用
docker image inspect 镜像IDinspect 显示一个或多个图像的详细信息

在这里插入图片描述

3.创建mysql配置文件

  1. 进入mysql 配置文件目录
mkdir -p /usr/local/mysql/conf
cd /usr/local/mysql/conf
  1. 更改用户和组为polkitd input , 不增加以下命令,会出现以下错误
chown -R polkitd:input /usr/local/mysql/

如果输入以上命令提示 chown: invalid user: ‘polkitd:input’, 就新增用户和组,将用户分配给组

添加用户:		useradd polkitd
添加组:		    groupadd input 
分配:		    usermod -aG input polkitd

在这里插入图片描述

  1. vim my.cnf 创建mysql配置,复制下面文件内容
[mysqld]
# MySQL 用户名,指定运行 MySQL 服务的系统用户为 "mysql"。
user=mysql
# 禁用 MySQL 的 DNS 反向解析功能,提高数据库连接性能
skip-name-resolve
# 允许最大连接数
max_connections=1024
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
# 服务端使用的字符集默认为UTF8mb4
character-set-server=utf8mb4
# 设置排序规则为 utf8mb4_general_ci,大小写不敏感的排序规则
collation-server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 使用“mysql_native_password”插件认证
authentication_policy=mysql_native_password
#是否对sql语句大小写敏感,1表示不敏感 注意此参数在8.0版本后必须在初始化数据库之前配置,即初始化后不允许修改此值
lower_case_table_names = 1
#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭 ,导致数据库丢失
#MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout = 28800000
# MySQL 连接闲置超过一定时间后将会被强行关闭,避免数据库丢失。设置为 28800000 毫秒(8 小时)。
wait_timeout = 28800000
#导出
secure_file_priv=/var/lib/mysql-files
# 启用二进制日志功能,用于记录数据库更改, 默认存储在 /var/lib/mysql, 并指定前缀名 mysql-bin
log-bin = mysql-bin
# binlog 文件的过期时间
binlog_expire_logs_seconds=2592000

# SQL 模式配置,包含多个选项,用逗号分隔。
# - STRICT_TRANS_TABLES:严格模式,对于插入错误或警告的值,拒绝而不是警告,包括转换问题。
# - NO_ZERO_IN_DATE:禁止插入零日期,例如 '0000-00-00'。
# - NO_ZERO_DATE:禁止插入零日期,例如 '0000-00-00'。
# - ERROR_FOR_DIVISION_BY_ZERO:在发生除以零的操作时抛出错误,而不是产生 NULL 值。
# - NO_ENGINE_SUBSTITUTION:如果指定的存储引擎不可用,不要自动替换为其他可用的存储引擎。
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#时区
default-time_zone = '+8:00'
#日志时区
log_timestamps=SYSTEM
# 指定允许的 TLS 版本,这里设置为 TLSv1.2 和 TLSv1.3
tls_version=TLSv1.2,TLSv1.3

#Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
#任何给定 MySQL 用户帐户允许的最大同时连接数。值 0(默认值)表示 “没有限制。”
#max_user_connections=0
#SELECT语句 的执行超时 ,以毫秒为单位。如果值为 0,则不启用超时
#max_execution_time=5000
#查询返回数据行数最大值,超过此值则终止查询默认最大值18446744073709551615
#max_join_size=10000
#执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
#lock_wait_timeout = 3600
#内部内存临时表的最大值。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
#tmp_table_size = 64M
#max_heap_table_size = 64M
 
[mysql]
default-character-set=utf8mb4
 
[client]
default-character-set=utf8mb4

4.创建mysql容器并运行

docker run \
--restart=always \
--privileged=true \
--name  mysql \
-p 3306:3306 \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /usr/local/mysql/mysql-files:/var/lib/mysql-files \
-v /usr/local/mysql/mysqld:/var/run/mysqld  \
-e MYSQL_ROOT_PASSWORD=abc*@*ABC \
-e TZ=Asia/Shanghai \
-d mysql

命令解析

命令作用
docker run创建并启动一个容器
–name mysql将容器取名为mysql
–privileged=true \开启目录挂载权限)
-d设置后台运行
-p 3306:3306映射端口(宿主机端口:容器端口)
–restart=always \自启动
-v /usr/local/mysql/log:/var/log/mysql将日志文件夹挂载到宿主机(宿主机路径:容器路径)
-v /usr/local/mysql/data:/var/lib/mysql将mysql储存文件夹挂载到主机(宿主机路径:容器路径)
-v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf将配置文件夹挂载到主机(宿主机路径:容器路径)
-e TZ=Asia/Shanghai指定时区
-e MYSQL_ROOT_PASSWORD=123456设置mysql密码
mysql:latest指定以哪个镜像创建容器(镜像名或镜像ID)

在这里插入图片描述

查看mysql是否启动

docker ps -a

在这里插入图片描述

5.建立软连接

本地主机连接容器的mysql时,需要查到 /var/lib/mysql/mysql.sock。我们启动mysql容器后,在/usr/local/mysql/mysqld目录下有一个mysqld.sock。我们要把这个文件链接到本地主机的var/lib/myql目录中。

ln -s /usr/local/mysql/mysqld/mysqld.sock /var/lib/mysql/mysql.sock

6.开放3306端口

在这里插入图片描述

执行完以上操作,通过工具即可连接mysql了

7.登录mysql

docker exec -it mysql bash

输入用户名密码进入mysql

mysql -uroot -proot

在这里插入图片描述

8.修改mysql密码

查看密码加密规则

use mysql;
SELECT Host, User, plugin from user;

在这里插入图片描述

修改密码加密规则

ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY` 'abc*@*ABC';
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'abc*@*ABC';

刷新权限,使修改的密码生效

FLUSH PRIVILEGES;

9.查看mysql日志

# mysql为镜像名称
docker logs mysql

10.重启mysql

修改完成配置文件后,重启mysql ,没有启动过,不需要执行下面的命令

docker restart mysql

10.外部如何访问mysql

可以看到root用户的Host是localhost,代表只能当前主机访问,外部是不可以访问的

在这里插入图片描述

  1. 创建用户
CREATE USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'abc*@*ABC';
  1. 授权
grant all privileges on *.* to 'root'@'%' ;
  1. 刷新权限
FLUSH PRIVILEGES;
  1. 重新查看用户表
SELECT Host, User, plugin from user;

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值