关于安装运行MYSQL8.0简单使用及注意事项 On Docker Desktop & WSL2
背景介绍
MYSQL是业界非常流行的一款关系型数据库系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
MySQL is the world's most popular open source database. With its proven performance, reliability and ease-of-use, MySQL has become the leading database choice for web-based applications, covering the entire range from personal projects and websites, via e-commerce and information services, all the way to high profile web properties including Facebook, Twitter, YouTube, Yahoo! and many more.
安装MYSQL
从docker官方镜像库,我们就能找到MYSQL镜像,分社区版(免费)和企业版(收费),我们这里就用社区版就行了。
安装也很简单,比如以v8.0版本为例,切换到Ubuntu终端的Root用户执行如下命令即可
docker run --publish 3306:3306 --name mysql-ce-8.0 --restart always \
--volume /home/username/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=yourrootpassword \
-d mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
其中含义如下:
--publish 3306:3306代表容器内端口号和暴漏的端口号,第一个数字是对外暴漏的端口号,如果你本地有其他同类数据库,你可以修改其他值,第二个值是容器内MYSQL的默认监听端口3306,这个不建议修改。--name mysql-ce-8.0是我们给即将运行的Docker实例取的昵称。--restart always代表希望这个实例随着Docker Desktop一起重启,这样就自动做到开机自启。--volume /home/username/mysql/data:/var/lib/mysql代表我们持久化MYSQL的目录绑定,这里你需要把第一个地址修改成你自己的地址,如果没有对应的文件夹的,请实现新建好:mkdir dirname-e MYSQL_ROOT_PASSWORD=yourrootpassword是设置Root账号的预设密码,请将yourrootpassword部分替换成自己的密码。-d mysql:8.0是指定镜像名字和版本号(Tag),这里我们那Tag=8.0举例,还有其他Tag请参见Docker Hub详情页--character-set-server=utf8mb4和--collation-server=utf8mb4_unicode_ci,然数据库所有表都采用utf8mb4字符


解决登录问题
- 进入MYSQL容器内部
docker exec -it mysql-ce-8.0 bash

- 进入MYSQL的ROOT账号
mysql -uroot -p

- 查看MYSQL所有数据库
show databases;

- 进入名为
mysql的数据库
use mysql;

- 查询所有的用户
select host,user,plugin from user;

我们会看到所用用户的密码登录方式都已经是caching_sha2_password模式,这是MYSQL 8.0系列新引入的一种密码机制。
传统的MYSQL密码机制插件叫mysql_native_password,其采用的是一种不加盐的SHA1哈希算法。
(SHA1(SHA1(password)))
将密码用如上方式存储在mysql.user表中验证用户,该插件的一个优点是,它允许使用质询-响应机制进行身份验证,从而可以在未加密的通道上验证客户端的身份,而无需发送实际密码,但是缺点也很明显,很容易被暴力破击。
而新的caching_sha2_password密码算法呢,使用的是SHA256哈希算法,并且每个密码采用20字节的加盐,而且支持两种操作方式:
- COMPLETE:要求客户端安全地发送实际密码(通过TLS连接或使用RSA密钥对)。服务器生成5000轮哈希,并与mysql.user中存储的值进行比较。
- FAST:允许使用SHA2哈希的基于质询-响应的身份验证。高性能和安全性在同一时间。
通过使用不同轮回数的哈希将密码存储和身份验证脱钩。即使有人可以访问这两个密码,也无法在实际可行的时间内使用此信息来推断密码或获取密码的sha2哈希。蛮力破解8字符长的密码以及5000轮咸化哈希值将花费很长时间。
对比两种密码机制特点如下:
| 特性 | mysql_native_password |
caching_sha2_password |
|---|---|---|
| 哈希算法 | SHA1 | SHA256 |
| 加盐 | 无 | 20字节 |
| 哈希轮数 | 2 | 5000 |
| 支持质询-响应认证 | 是 | 是(快速模式) |
| 重新确定密码知识 | 没有 | 是(完成模式) |
- 暂时修改Root用户的登录密码机制
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

- 刷新让权限设置生效,让表中设置同步到内存中
FLUSH PRIVILEGES;

- 尝试连接并登录本地MYSQL
笔者使用的是Database .Net工具来连接这个MYSQL数据库。
由于MYSQL 8.0之后带来的相关安全限制,我们需要在连接时改两个地方。
- 切换到连接对话框属性页面,把
AllowPublicKeyRetrieval设置成true

- 切换到连接对话框属性页面,把
Ssl Mode设置成None

然后,再输入root的密码,进行连接,即可


By default, client libraries will not send the password unless a secure connection (using TLS or RSA public key encryption) can be established. To avoid a MITM attack, the RSA public key will not be sent in plain text. For Connector/NET, you can use TLS (SslMode=Required) to protect the RSA public key. With MySqlConnector, you also have the option of specifying the server’s public key directly, using the ServerRSAPublicKeyFile option, or allowing a potentially-insecure connection by using AllowPublicKeyRetrieval=true.
附录
关于安装运行MYSQL8.0简单使用及注意事项 On Docker Desktop & WSL2的更多相关文章
- CentOS 7.4 64位安装配置MySQL8.0
第一步:获取mysql YUM源 进入mysql官网获取RPM包下载地址 https://dev.mysql.com/downloads/repo/yum/ image.png 点击下载 im ...
- 64位 windows10,安装配置MYSQL8.0.13
MySQL的安装配置过程,一查网上一大堆,但是每个人在安装配置的过程中都会碰到一些问题,因为安装的版本不一样,有些命令可能就不适用了.所以安装之前一定先确认好你的版本号. 下面开始安装MYSQL8.0 ...
- win10下安装配置mysql-8.0.13
1.下载mysql-8.0.13安装包 https://dev.mysql.com/downloads/mysql/ 选择zip安装包下载就好. 2.解压到你要安装的目录 3.创建my.ini配置文件 ...
- win10下安装配置mysql-8.0.13--实战可用
1.下载mysql-8.0.13安装包 1 https://dev.mysql.com/downloads/mysql/ 选择zip安装包下载就好. 2.解压到你要安装的目录 3.创建my.ini配置 ...
- Win10下免安装版MySQL8.0.16的安装和配置
1.MySQL8.0.16解压 其中dada文件夹和my.ini配置文件是解压后手动加入的,如下图所示 2.新建配置文件my.ini放在D:\Free\mysql-8.0.16-winx64目录下 [ ...
- ubuntu18.04手动安装二进制MySQL8.0
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz tar xvJf ...
- CentOS7 快速安装配置mysql8.0
因为这个项目是两台CentOS7虚拟机,一台当作 MySQL服务器,所以需要配置3306端口公开 参考教学视频:Java2020体系课 22周课 5-2~3 两节课 yum search mysql- ...
- Docker 探索安装WordPress+Mysql8.0
拉取MYSQL,注意默认是8.0版本,连接加密方式有变化 docker pull mysql 运行MYSQL docker run --name wordpress-mysql -p 3306:330 ...
- CentOS下安装配置MySQL8.0的步骤详解
下载yum源的安装包 yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 安装 yu ...
随机推荐
- ajax 异步无刷新点改
<button class="status" t_id="{{$v->id}}">{{$v->status}}</button&g ...
- 网络协议 SNMP- Windows10无简单SNMP协议服务器配置
原因:Windwos10 1809后更新版本,无启动SNMP协议服务器可选配置项. 解决: 1.打开设置中的[开发人员模式],设置->更新与安全->开发者选项->开发人员模式 2.添 ...
- rsync 服务配置_rsync命令使用方法
rsync介绍 rsync用来定时备份服务器中的文件或者目录,有三种工作模式,本地复制,使用系统用户认证,守护进程方式,开源高效.同步工具,把一台机器上的文件同步都另一台机器 .默认使用873端口 选 ...
- JFlash ARM对stm32程序的读取和烧录-(转载)
本篇文章主要是记录一下JFlash ARM 的相关使用和操作步骤,读取程序说不上破解,这只是在没有任何加密情况下对Flash的读写罢了!在我们装了JLINK驱动后再根目录下找到JFlash ARM , ...
- Java 事务的隔离级别
引言 之前关于事务的文章已介绍了事务的概念以及事务的四个属性(ACID),相信你对事务应该有所认识和了解. 本篇文章是关于事务的隔离性,介绍数据库提供的多种隔离级别. 数据库访问的并发性问题 所谓事务 ...
- CENTOS 7 下配置默认网关
1. ip route 显示和设定路由 1.1 显示路由表 [root@linux-node1 ~]# ip route show default via 192.168.56.2 dev eth0 ...
- Jmeter(四十六) - 从入门到精通高级篇 - Jmeter之网页图片爬虫-下篇(详解教程)
1.简介 上一篇介绍了爬取文章,这一篇宏哥就简单的介绍一下,如何爬取图片然后保存到本地电脑中.网上很多漂亮的壁纸或者是美女.妹子,想自己收藏一些,挨个保存太费时间,那你可以利用爬虫然后批量下载. 2. ...
- 在Spring Bean实例过程中,如何使用反射和递归处理的Bean属性填充?
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! <Spring 手撸专栏>目录 [x] 第 1 章:开篇介绍,我要带你撸 Spri ...
- 『动善时』JMeter基础 — 34、JMeter接口关联【XPath提取器】
目录 1.XPath提取器介绍 2.XPath提取器界面详解 3.XPath提取器的使用 (1)测试计划内包含的元件 (2)网易首页请求界面内容 (3)XPath提取器界面内容 (4)百度首页请求界面 ...
- IDEA 通过ctrl+滚轮缩放字体大小
能用图解决的问题,尽量简单粗暴通俗易懂 1.第一种方式 2.第二种方式