docker安装mysql8.0+

news2024/11/27 12:57:19

文章目录

  • 1.docker仓库找到需要的镜像版本
  • 2.安装Mysql镜像
  • 3.创建mysql配置文件
  • 4.创建mysql容器并运行
  • 5.建立软连接
  • 6.开放3306端口
  • 7.登录mysql
  • 8.修改mysql密码
  • 9.查看mysql日志
  • 10.重启mysql
  • 10.外部如何访问mysql

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/

在这里插入图片描述

  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;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/778108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis九种数据类型及其持久化机制:探索数据存储的奇妙世界

目录 一、9种数据类型 3.1 Key操作 3.1.1 相关命令 练习: 3.2 String 3.2.1 结构图 3.2.2 相关命令 练习: 3.3 List(双向的链表) 3.3.1 结构图 3.3.2 相关命令 练习: 3.4 Set(无序集合) 3.4.1 结构图 3.4…

【GeoDa实用技巧100例】010:制作平滑地图

文章目录 一、平滑地图介绍二、加载实验数据三、平滑地图制作四、注意事项一、平滑地图介绍 平滑地图(Smooth,或称滑动平均地图)是以“平滑”的观测值(简称平滑值),而非实际的观测值编制的地图。某个地域单位的所谓平滑值是指该地域单位与周围地区观测值的平均值。地图平滑化…

精通正则表达式 - 打造高效正则表达式

目录 一、典型示例 1. 稍加修改——先迈最好使的腿 2. 效率 vs 准确性 3. 继续前进——限制匹配优先的作用范围 4. “指数级”匹配 二、全面考察回溯 1. 传统 NFA 的匹配过程 2. POSIX NFA 需要更多处理 3. 无法匹配时必须进行的工作 4. 看清楚一点 5. 多选结构的代…

zabbix 企业级监控 (5) Zabbix监控nginx

目录 简介 配置yum仓库 Web Zabbix端添加主机 启用之前自动发现的规则及动作 简介 nginx在生产环境中的应用越来越广泛,所以需要对nginx的性能状态做一些监控来发现出来出现的问题。zabbix监控nginx,首先确认nginx的监控指标,主要有&#…

HTML中常用的标签

注释标签&#xff1a;<!--内容--> 标题标签&#xff1a;<h1></h1>;<h2></h2>;<h3></h3>;<h4></h4>;<h5></h5>;<h6></h6> 段落标签&#xff1a;<p></p> 没有<p></p>时…

数据备份和恢复练习

创建数据库db create database db&#xff1b; 创建student和score表并插入数据 mysql> select *from student-> ; --------------------------------------------------------------- | id | name | sex | birth | department | address | ----…

qt 5.12.6配置 msvc2015 32bit

qt 5.12.6配置 msvc2015 32bit 1.添加临时档案库2.安装 msvc20153. 配置 qmake 环境4.修改系统环境变量5.问题修改1.qt没有被正确的安装,请运行make install2.QT编译出错&#xff1a;rc不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。3.QT License check fai…

【iOS】—— block,KVC,KVO,Category等问题解答

文章目录 block1.block的原理是怎样的&#xff1f;本质是什么&#xff1f;2.__block的作用是什么&#xff1f;有什么使用注意点&#xff1f;3.block的属性修饰词为什么是copy&#xff1f;使用block有哪些使用注意&#xff1f;4.block在修改NSMutableArray&#xff0c;需不需要添…

使用langchain与你自己的数据对话(一):文档加载与切割

LangChain是一个基于大语言模型&#xff08;如ChatGPT&#xff09;用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口&#xff0c;可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互&#x…

简单理解TCP,UDP,HTTP

我们都知道TCP、UDP、HTTP内部有很复杂的过程&#xff0c;很多人没办法理解的那么深&#xff0c;只想知道这是个什么鬼。 1、TCP、UDP、HTTP 是什么? TCP/IP是个协议组&#xff0c;可分为三个层次&#xff1a;网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、…

50 Matplotlib Visualizations, Python实现,源码可复现

详情请参考博客: Top 50 matplotlib Visualizations 因编译更新问题&#xff0c;本文将稍作更改&#xff0c;以便能够顺利运行。 0 Introduction 新建项目文件夹为matplotlib_visualizations&#xff0c;以下所有的.py文件均默认在该位置。 0.2 Setup Setup.py文件内容如下&…

(双指针) 剑指 Offer 57 - II. 和为s的连续正数序列 ——【Leetcode每日一题】

❓ 剑指 Offer 57 - II. 和为s的连续正数序列 难度&#xff1a;简单 输入一个正整数 target &#xff0c;输出所有和为 target 的连续正整数序列&#xff08;至少含有两个数&#xff09;。 序列内的数字由小到大排列&#xff0c;不同序列按照首个数字从小到大排列。 示例 1…

zookeeper的应用

Zookeeper的配置文件解析: Zookeeper内部原理: 选举机制 半数机制:在集群环境中半数以上的机器存活,这个集群可用,所以在设计Zookeeper集群系统时&#xff0c;通常会选择 奇数台服务器来搭建Zookeeper的集群 虽然在配置文件中并没有指定Master和Slave。但是&#xff0c;Zookeep…

【安全狗】linux免费服务器防护软件安全狗详细安装教程

在费用有限的基础上&#xff0c;复杂密码云服务器基础防护常见端口替换安全软件&#xff0c;可以防护绝大多数攻击 第一步&#xff1a;下载服务器安全狗Linux版&#xff08;下文以64位版本为例&#xff09; 官方提供了两个下载方式&#xff0c;本文采用的是 方式2 wget安装 方…

09.计算机网络——套接字编程

文章目录 网络字节序socket编程socket 常见APIsockaddr结构 UDP编程创建socket绑定socketsendto发送数据recvform接收数据关闭socket TCP编程创建socket绑定socketlisten监听套接字accept服务端接收连接套接字connect客户端连接套接字send发送数据recv接收数据关闭socket 工具n…

算法训练营第四十六天||● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!

● 139.单词拆分 这道题和完全背包一样&#xff0c;求排列数相当于 字符串相当于背包&#xff0c;字串相当于物品 注意find方法的使用 find&#xff08;s.begin(),s.end(),"zichuan") 还有s.substr的使用s.substr(起始位置&#xff0c;截取长度&#xff09; clas…

Stable Diffusion服务环境搭建(远程服务版)

Stable Diffusion服务环境搭建&#xff08;远程服务版&#xff09; Stable Diffusion是什么 Stable diffusion是一个基于Latent Diffusion Models&#xff08;潜在扩散模型&#xff0c;LDMs&#xff09;的文图生成&#xff08;text-to-image&#xff09;模型。具体来说&#…

ES6基础知识一:说说var、let、const之间的区别

一、var 在ES5中&#xff0c;顶层对象的属性和全局变量是等价的&#xff0c;用var声明的变量既是全局变量&#xff0c;也是顶层变量 注意&#xff1a;顶层对象&#xff0c;在浏览器环境指的是window对象&#xff0c;在 Node 指的是global对象 var a 10; console.log(window.…

VUE3---->基础入门

目录 vue 基础入门 1、解读核心关键词&#xff1a;框架 2、vue 的版本 3、vue 的调试工具 vue 基础入门 vite 的基本使用 1. 创建 vite 的项目 2. 梳理项目的结构 3. vite 项目的运行流程 组件的基本使用 1. 组件的注册 2. 组件之间的样式冲突问题 3. 组件的 props …

穿透内网群晖NAS实现远程访问【无公网IP】

穿透内网群晖NAS实现远程访问【无公网IP】 现代科技日新月异&#xff0c;我们身边的电子设备也在不断更新&#xff0c;日积月累之下&#xff0c;被淘汰的电子设备越来越多&#xff0c;难道就让这些性能不算差的电子设备从此闲置么&#xff0c;这明显不符合我们物尽其用的原则&a…