docker中安装mysql8

阿里云ecs服务器,centos7.9系统,docker中安装mysql8

文章目录

  • 阿里云ecs服务器,centos7.9系统,docker中安装mysql8
    • 1. 拉取镜像
    • 2. 基于宿主机实现mysql8数据目录、配置文件、初始化脚本的挂载
          • 2.1 创建3个文件夹,一会创建容器需要用(用于挂载本地文件和目录)
          • 2.2 配置mysql.cnf的内容,并放入conf文件夹中
          • 2.3 将sql文件放入init文件夹中
    • 3. 创建mysql容器
          • 3.1 测试是否成功
          • 3.2 出现错误:docker 启动MySQL一直处于restarting状态
    • 4. 远程连接mysql
          • 4.1 ecs服务器设置安全组规则
          • 4.2 报错
          • 4.3 设置数据库用户访问权限

1. 拉取镜像

docker pull mysql # 拉取镜像
docker images # 查看镜像

查看mysql镜像是否成功下载

2. 基于宿主机实现mysql8数据目录、配置文件、初始化脚本的挂载

2.1 创建3个文件夹,一会创建容器需要用(用于挂载本地文件和目录)
mkdir -p /islirj/mydata/mymysql8/conf # 存放本地配置文件mysql8.cnf
mkdir -p /islirj/mydata/mymysql8/init # 放置数据库sql文件,初始化时被执行一次
mkdir -p /islirj/mydata/mymysql8/data
2.2 配置mysql.cnf的内容,并放入conf文件夹中
[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
2.3 将sql文件放入init文件夹中

放置多个sql文件

  1. sql文件只在容器创建时执行一次
  2. sql文件可以有多个

3. 创建mysql容器

# 1.删除原来的MySQL容器
docker rm -f mysql # -f 强制删除

# 2.创建并运行新mysql容器,挂载本地目录
docker run -d \ # 创建并运行一个容器,-d是让容器在后台运行
  --name mymysql8 \ # 给容器起个名字,必须唯一
  -p 3306:3306 \ # 设置端口映射
  -e TZ=Asia/Shanghai \ # 设置环境变量
  -e MYSQL_ROOT_PASSWORD=yourpassword \ # 设置密码
  -v /islirj/mydata/mymysql8/data:/var/lib/mysql \ # 挂载
  -v /islirj/mydata/mymysql8/conf:/etc/mysql/conf.d \
  -v /islirj/mydata/mymysql8/init:/docker-entrypoint-initdb.d \
  --restart=always \ # 当重启Docker时会自动启动该容器
  -dit mysql:lates \ # 后台运行并可控制台接入;指定使用的镜像(latest代表最新版本;如果使用5.7则写为mysql:5.7)
3.1 测试是否成功
# 3.查看data目录,会发现里面有大量数据库数据,说明数据库完成了初始化
ls -l data

# 4.查看MySQL容器内数据
# 4.1.进入MySQL
docker exec -it mymysql8 mysql -uroot -pyourpassword
# 4.2.查看编码表
show variables like "%char%";
# 4.3.结果,发现编码是utf8mb4没有问题
# +--------------------------+--------------------------------+
# | Variable_name            | Value                          |
# +--------------------------+--------------------------------+
# | character_set_client     | utf8mb4                        |
# | character_set_connection | utf8mb4                        |
# | character_set_database   | utf8mb4                        |
# | character_set_filesystem | binary                         |
# | character_set_results    | utf8mb4                        |
# | character_set_server     | utf8mb4                        |
# | character_set_system     | utf8mb3                        |
# | character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
# +--------------------------+--------------------------------+

# 5.查看数据
# 5.1.查看数据库
show databases;
# 结果如下
# +--------------------+
# | Database           |
# +--------------------+
# | information_schema |
# | mysql              |
# | performance_schema |
# | pig                |
# | pig_codegen        |
# | pig_config         |
# | pig_job            |
# | sys                |
# +--------------------+
3.2 出现错误:docker 启动MySQL一直处于restarting状态

解决方案:查看日志
命令:docker logs -f <容器名>

4. 远程连接mysql

4.1 ecs服务器设置安全组规则
  1. 阿里云的服务器默认端口是不对外开放的,如果想要供外部访问,需要在安全组中手动添加规则,开放端口
  2. 首先去百度,搜索ip,查看自己ip地址,我的ip是182.204.x.x,所以在第4步配置的时候写成182.204.0.0/16; 如果写成0.0.0.0/0代表所有ip都可以访问,有点危险。

设置安全组

  1. 做完这一步之后,尝试实用工具连接
  2. 如果连接报错,错误码为2048:参考4.2
  3. 如果是其它问题,参考4.3

sqlyog连接

4.2 报错
  1. 错误号码2058 Plugin caching_sha2_password could not be loaded:xxxxxxx
  2. 原因:出现这个问题,是因为 MySQL 从 8.0 版本开始,新增了caching_sha2_password授权插件,并且新建用户时默认使用该插件进行加密,而你的 sql工具 无法识别该加密方式加密的密码。
  3. 解决方案
4.3 设置数据库用户访问权限

将云服务器的3306端口开放之后还是不可以在本地进行连接,因为用户的访问权限默认是localhost,并不能从外部进行访问,需要手动赋权。

  1. 使用如下命令查看数据库中各个用户的访问权限:
select user,host from mysql.user;

# 结果
# +------------------+-----------+
# | user             | host      |
# +------------------+-----------+
# | root             | %         |
# | mysql.infoschema | localhost |
# | mysql.session    | localhost |
# | mysql.sys        | localhost |
# | root             | localhost |
# +------------------+-----------+
  1. 用如下命令将所需要开放的用户的访问权限改为任意:
# mysql5.7版本命令(密码一定要复杂)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '远程连接的密码' WITH GRANT OPTION;

# mysql8.0版本使用上述语句会报错:
# You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by  'password' with grant option'
# 原因:原因分析 :高版本的MySQL把将创建账户和赋予权限分开了。
# 解决方法:分开执行。

# 1. 创建账户
create user 'root'@'%' identified by '远程连接密码';

# 2. 赋予权限
grant all privileges on *.* to 'root'@'%' with grant option;

# 3. 刷新
flush privileges;

参考链接

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2.2 添加商户缓存

实战篇Redis 2.2 添加商户缓存 在我们查询商户信息时&#xff0c;我们是直接操作从数据库中去进行查询的&#xff0c;大致逻辑是这样&#xff0c;直接查询数据库那肯定慢咯&#xff0c;所以我们需要增加缓存 GetMapping("/{id}") public Result queryShopById(Pat…

AssertionError: extension access disabled because of command line flags解决方案

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 本文介绍在 Stable Diffusion WebUI 中安装插件时出现 AssertionError: extension access disabled because of comma…

Spring MVC学习记录

一、MVC模式 1. MVC模型&#xff1a;一种软件架构模式 Model-View-Controller&#xff08;模型-视图-控制器&#xff09;模式&#xff0c;目标是将软件的用户界面&#xff08;即前台页面&#xff09;和业务逻辑分离&#xff0c;使代码具有更高的可扩展性、可复用性、可维护性以…

Lua热更新(xlua)

发现错误时检查是否:冒号调用 只需要导入asset文件夹下的Plugins和Xlua这两个文件即可,别的不用导入 生成代码 和清空代码 C#调用lua using Xlua; 需要引入命名空间 解析器里面执行lua语法 lua解析器 LuaEnv 单引号是为了避免引号冲突 第二个参数是报错时显示什么提示…

docker 的网络管理

docker应用自带了三种类型的网络&#xff0c;然后我们自己也能自定义网络 roottest-virtual-machine:~# docker network ls NETWORK ID NAME DRIVER SCOPE 4c3e28760cff bridge bridge local afd1493dc119 host host local 5f200e2eaf22 n…

学透Spring Boot — 创建一个简单Web应用

从今天开始&#xff0c;我们将开始学习一个新的系列&#xff0c;那就是在项目中用得非常广泛的一个框架 —— Spring Boot&#xff0c;我们会循序渐进地介绍 Spring Boot 的方方面面&#xff0c;包括理论和实战&#xff0c;也会介绍和Spring Boot一些热点面试题。 概论 本文是…

js逆向之实例某宝热卖(MD5)爬虫

目录 正常写 反爬 逆向分析 关键字搜索 打断点&分析代码 得出 sign 的由来 确定加密方式 写加密函数了 补全代码 免责声明:本文仅供技术交流学习,请勿用于其它违法行为. 正常写 还是老规矩,正常写代码,该带的都带上,我这种方法发现数据格式不完整. 应该后面也是大…

Unity3d使用Jenkins自动化打包(Windows)(二)

文章目录 前言一、Unity工程准备二、Unity调取命令行实战一实战二实战三实战四实战五 总结 前言 自动化打包的价值在于让程序员更轻松地创建和管理构建工具链&#xff0c;提高编程效率&#xff0c;将繁杂的工作碎片化&#xff0c;变成人人&#xff08;游戏行业特指策划&#x…

JavaEE:网络原理——协议(应用层+传输层)

应用层 协议就是一种约定 应用层&#xff1a;对应应用程序&#xff0c;是程序员打交道最多的一层&#xff0c;调用系统提供的网络api写出的代码都是属于应用层的。应用层有很多现成的协议&#xff0c;但程序员一般用的还是自定义协议 自定义协议要约定好哪些内容&#xff1f…

PPT没保存怎么恢复?3个方法(更新版)!

“我刚做完一个PPT&#xff0c;正准备保存的时候电脑没电自动关机了&#xff0c;打开电脑后才发现我的PPT没保存。这可怎么办&#xff1f;还有机会恢复吗&#xff1f;” 在日常办公和学习中&#xff0c;PowerPoint是制作演示文稿的重要工具。我们会在各种场景下使用它。但有时候…

第18篇:4位二进制数到2位十进制数的转换

Q&#xff1a;上一篇我们是将4位二进制数转换为十六进制数在1个数码管显示&#xff0c;本期我们转换为2位十进制数显示在2个数码管上。 A&#xff1a;设计基本思路&#xff1a;4位二进制数转换后的十进制数小于10时&#xff0c;代表个位数的数码管显示0-9&#xff0c;代表十位…

R 药物经济学评价:Markov模型构建及markov轨迹图绘制

All models are wrong, but some are useful-Box,1976 前言 药物经济学评价中比较常用的模型包括决策树&#xff08;Decision tree&#xff09;模型、马尔科夫&#xff08;Markov&#xff09;模型、分区生存模型&#xff08;Partitioned Survival Model,PSM&#xff09;、微观…

IDEA MyBatisCodeHelper Pro最新版(持续更新)

目录 0. 你想要的0.1 包下载0.2 使用jh 1. 功能介绍2. 下载安装2.1 在idea中插件市场安装2.2 在jetbrains插件市场下载安装 3. 简单使用3.1 创建一个SpringBoot项目3.2 配置数据库3.3 一键生成实体类、mapper 0. 你想要的 0.1 包下载 测试系统&#xff1a;Windows&#xff08…

Python+selenium 初体验

PythonSelenium初体验&#xff1a;自动化网页测试与爬虫技术的新里程 引言 在Java领域久了, 偶然间接触到Pythonselenium还是感觉挺神奇的. 自己在这段时间也尝试了使用他们做一些自动化网页的测试. 觉得着实不错. 解放自己的双手, 可以做到网页自动点击,上传文件, 上传图片, …

接口自动化之 + Jenkins + Allure报告生成 + 企微消息通知推送

接口自动化之 Jenkins Allure报告生成 企微消息通知推送 在jenkins上部署好项目&#xff0c;构建成功后&#xff0c;希望可以把生成的报告&#xff0c;以及结果统计发送至企微。 效果图&#xff1a; 实现如下。 1、生成allure报告 a. 首先在Jenkins插件管理中&#x…

【QT】:基本框架

基本框架 一.创建程序二.初识函数1.main2.Widget.h3.Wight.cpp4.Wight.ui5.文件名.pro 三.生成的中间文件 本系列的Qt均使用Qt Creator进行程序编写。 一.创建程序 二.初识函数 1.main 2.Widget.h 3.Wight.cpp 4.Wight.ui 此时再点击编辑&#xff0c;就看到了ui文件的本体了。…

国内IP切换软件:解锁网络世界的新钥匙

在数字化快速发展的今天&#xff0c;互联网已成为我们生活中不可或缺的一部分。然而&#xff0c;伴随着网络使用的深入&#xff0c;许多用户逐渐意识到&#xff0c;不同的IP地址可能会带来截然不同的网络体验。为了应对这一问题&#xff0c;国内IP切换软件应运而生&#xff0c;…

Python(django)之单一接口展示功能前端开发

1、代码 建立apis_manage.html 代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>测试平台</title> </head> <body role"document"> <nav c…

Django Cookie和Session

Django Cookie和Session 【一】介绍 【1】起因 HTTP协议四大特性 基于请求响应模式&#xff1a;客户端发送请求&#xff0c;服务端返回响应基于TCP/IP之上&#xff1a;作用于应用层之上的协议无状态&#xff1a;HTTP协议本身不保存客户端信息短链接&#xff1a;1.0默认使用短…

重塑未来:Web3如何改变我们的数字生活

引言 随着科技的飞速发展&#xff0c;Web3已经成为数字时代的新潮流&#xff0c;其革命性的变革正在渐渐改变着我们的数字生活。本文将深入探讨Web3如何改变我们的数字生活&#xff0c;涉及其意义、应用场景、对未来的影响&#xff0c;以及我们如何适应这一变革&#xff0c;为…