mysql使用sha256密码,MySQL5.6启用sha256_password插件
1、背景:html
使用MySQL5.6过程当中,发现默认的加密插件为mysql_native_password。而sha256_password的安全程度要比mysql_native_password高,尝试切换为sha256_password。node
2、配置过程:mysql
资料:sql
一、从MySQL官网查询到服务器端sha256_password无需显式加载,能够在MySQL配置文件中配置使能。数据库
[mysqld]安全
default-authentication-plugin=sha256_passwordbash
二、据官网描述,要启用插件,须经过ssl方式进行链接,也就是说须要配置相关证书。服务器
实现过程:session
】
二、安装MySQL
下载的的MySQL是zip格式的,解压到磁盘后,将my-default.ini另存为my.ini(此处看我的爱好,可不用),关于my.ini须要修改的地方以下:
1)basedir datadir port 须要根据本身使用状况配置。
2)配置默认启用的加密插件。
三、简单配置完mysql配置文件后,以管理员方式打开cmd,进入第二步解压后的xxxmyql/bin目录。
1)执行mysqld -install(tips:mysqld -remove 是卸载mysql),也能够执行服务名称及配置文件路径:mysqld install mysql5 --defaults-file="E:\mysql5.6\my.ini"
2)执行net start mysql5启动MySQL服务(个人服务名称为mysql5,上一步install时指定了服务名称,若是install时没指定默认就是MySQL)
3)输入mysql -uroot -p链接数据库。第一次进入没有密码,直接回车。
4)进入mysql数据库,查询user表的内容,发现默认使用的加密插件为mysql_native_password以下图。
是否是my.ini配置的sha256_password没有生效呐?建立一个用户验证下插件是否生效。执行:CREATE USER 'test01'@'localhost' IDENTIFIED BY 'password';发现默认插件是生效了的。可是默认的root为啥不是sha256_password呢,我猜测(只是猜测)
多是假如root用户默认为sha256_password,那么使用root链接的话,就须要配置相关证书,这样使MySQL的安装过程复杂且使用体验下降。
使用新建立的用户test01登陆数据库,由于test01用户使用了sha256_password,此时是登陆失败的,提示身份验证须要SSL加密。因此要使用了sha256_password插件的用户是须要经过SSL加密的,也就是须要证书的。
5)补充一点:安装完成后root用户是没有密码的,要设置密码能够执行mysqladmin -u root -p password,Enter password:直接回车,由于此时root时没有密码的,接着输入及确认输入本身的密码。至此MySQL的安装已经完成。
3.证书制做及使能
a 生成一个 CA 私钥:openssl genrsa 2048 > ca-key.pem
b 私钥生成一个新的数字证书:openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem,执行过程当中须要填写一些内容,如国家、城市、邮箱等根据实际状况填写。
c 建立服务侧的私钥及数字证书:openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem
此时会填写一些内容如b步骤,其中有个密码能够直接回车。
d 将生成的私钥转换为 RSA 私钥文件格式:openssl rsa -in server-key.pem -out server-key.pem
e 使用CA 证书来生成一个服务器端的数字证书:openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
至此,服务端相关证书已建立成果,下面建立客户端证书。
f 为客户端生成一个私钥和证书:openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem > client-req.pem 须要填写问题见步骤b
g 将生成的私钥转换为 RSA 私钥文件格式:openssl rsa -in client-key.pem -out client-key.pem
h 为客户端建立一个数字证书:openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
至此,客户端和服务端证书所有建立完毕,生产八个文件以下:
2)配置证书
a 如今数据库中是没有开启SSL的,执行命令查看:show variables like'%ssl%';
b 开启SSL方法:证书使能,在MySQL的配置文件my.ini中指定服务端证书路径
ssl-ca=E:/mysql5.6/cert/ca-cert.pem
ssl-cert=E:/mysql5.6/cert/server-cert.pem
ssl-key=E:/mysql5.6/cert/server-key.pem
c 重启MySQL服务,执行net stop mysql5中止服务,再执行net startmysql5开启服务
d 再次执行show variables like'%ssl%'; 查看SSL已经开启了
至此MySQL安装及配置证书过程结束。
测试:
一、上面步骤中,在数据库中建立了以sha256_password加密的test01用户,密码为password。此时咱们用通常的方式链接确定会报错
二、使用开启SSL、指定证书的方式链接就是成功的,且经过\s 能够看出SSL信息,命令:mysql --ssl-ca=E:\mysql5.6\cert\ca-cert.pem --ssl-cert=E:\mysql5.6\cert\client-cert.pem --ssl-key=E:\mysql5.6\cert\client-key.pem -u test01 -ppasswor
三、当前系统中的root用户仍是mysql_native_password的加密方式,若是要想将root的加密方式修改的话执行:
use mysql;
update user set plugin='sha256_password' where user='root';
结果以下:
如今以root用户修改root用户的密码,执行:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1qaz@WSX');此时执行成功,再执行 FLUSH PRIVILEGES; password列已经被修改以下图,退出客户端从新链接为啥连不上了?
使用ssl方式链接失败了,可是使用空密码(直接回车)登陆是成功的
这是为何呢,经过分析以前使用sha256_password建立的test01用户发现:test01用户的passwor字段为空,authentication_string字段是有值的;而此时的root的password是有密文的,但authentication_string字段没有值。
因此咱们能得出2点:
sha256_password加密的用户,密码实际上是设置在authentication_string字段上的。
root登陆时,修改密码插件后,执行SET PASSWORD FOR 'root'@'localhost'设置密码时,当前CMD的session没有实效,仍是以前的加密插件在生效,修改的固然是password字段的值,而authentication_string字段的值依旧是空串。
最终使用空密码登陆后再执行一次设置密码的命令,SET PASSWORD FOR 'root'@'localhost' = PASSWORD('1qaz@WSX'); FLUSH PRIVILEGES;再退出,使用root及新密码登陆就是成功的了。
附上个人my.ini
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced ifyou
#***upgrade to a newer version of MySQL.
[mysqld]
# Remove leading # andset to the amount of RAM forthe most important data
# cachein MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size=128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonlyset, remove the # and set asrequired.
basedir= E:/mysql5.6datadir= E:/mysql5.6/data
port=3306# server_id=.....default-authentication-plugin=sha256_password
ssl-ca=E:/mysql5.6/cert/ca-cert.pem
ssl-cert=E:/mysql5.6/cert/server-cert.pem
ssl-key=E:/mysql5.6/cert/server-key.pem
# Remove leading # toset options mainly useful forreporting servers.
# The server defaults are fasterfortransactions and fast SELECTs.
# Adjust sizesasneeded, experiment to find the optimal values.
# join_buffer_size=128M
# sort_buffer_size=2M
# read_rnd_buffer_size=2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
View Code
mysql使用sha256密码,MySQL5.6启用sha256_password插件相关推荐
- mysql 密码sha256_MySQL5.6启用sha256_password插件
一.背景: 使用MySQL5.6过程中,发现默认的加密插件为mysql_native_password.而sha256_password的安全程度要比mysql_native_password高,尝试 ...
- linux mysql忘记root_linux下mysql-5.6忘记root密码,重置root密码详细过程
在linux平台下使用mysql过程中忘记了root密码,对于运维和DBA来讲都是一件头疼的事情,下面来讲解下怎么进行重置mysql数据库root 密码: 1.首先停止mysql服务进程: 1 ser ...
- mysql安装 修改密码 查找密码
关闭防火墙和selinux 1.编译安装mysql5.7 1.清理安装环境: # yum erase mariadb mariadb-server mariadb-libs mariadb-devel ...
- linux mysql解锁账号密码忘了怎么办,linux下mysql忘记密码怎么办
前言 今天在服务器安装mysql之后,登录发现密码错误,但是我没有设置密码呀,最后百度之后得知,mysql在5.7版本之后会自动创建一个初始密码. 报错如下: [root@mytestlnx02 ~] ...
- 怎么查到mysql的账号密码是什么_怎么查到mysql的账号密码是什么?
查到方法:首先以管理员身份运行一个cmd窗口,输入"mysql -uroot -p",回车入数据库:然后使用"select host,user,password from ...
- linux安装mysql 5.7_linux安装mysql5.7
1.下载Mysql 2.环境配置 检测系统是否自带Mysql # rmp -qa|grep mysql 如果有进行强行卸载 # rpm -e --nodeps mysql-libs-5.1.52-1. ...
- mysql 忘记root_解决MySQL忘记root密码
网上有很多关于忘记MySQL root密码的一些文章,里面都有写怎么去解决,但有时觉得写得太恶心,要么一字不漏的抄别人的,要么就说得不清不楚,好了,不吐槽了,以下是解决的整个过程. 首先我们要知道忘记 ...
- win上mysql忘记root密码_MySQL数据库之windows下mysql忘记root密码的解决方法
本文主要向大家介绍了MySQL数据库之windows下mysql忘记root密码的解决方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 方法一: 1.在DOS窗口下输入net ...
- centos rpm mysql 5.6_centos6.5 mysql5.6 RPM安装
准备工作: 网络源使用163,sohu 安装依赖包: yum -y install ntp cmake make openssl openssl-devel pcre pcre-devel libpn ...
最新文章
- 宏基因组扩增子最新分析流程QIIME2:官方中文帮助文档
- 设计模式复习-策略模式
- php点击价格_按价格从高到低排序和从低到高排序_可点击切换,WooCommerce 教程:[解决] 排序,航运成本 – 从低到高...
- reactive streams的Mono及Flux
- VMware虚拟机的网络设置
- jsonrpc php使用,php实现的一个简单jsonrpc框架实例
- 【车牌识别】基于matlab GUI BP神经网络车牌识别【含Matlab源码 669期】
- 「每天一道面试题」AQS是什么?了解其内部同步队列实现结构吗?
- js ajax上传file文件上传,使用ajaxfileupload.js实现上传文件功能
- 计算机毕业设计java+jsp旅游网站(源码+系统+mysql数据库+Lw文档)
- 【博主推荐】HTML5响应式手机WEB(附源码)
- ubuntu18.04安装PCL点云库踩坑指南
- 浙工大计算机学院2013学年二等奖学金,关于2012—2013学年学院奖学金评定文件.doc...
- w7计算机管理哪个是显卡,win7怎么看显卡配置以及win7怎么看电脑完整配置
- 视觉单目标跟踪任务概述
- python可视化的优势_「数据可视化」数据可视化的优势有哪些?
- web服务器—nginx
- IPC-共享内存 (七猫的藏经阁 )
- 从构建分布式秒杀系统聊聊WebSocket推送通知 1
- 珍惜能在公司上班的每一天——2022年个人工作总结
热门文章
- 获取系统时间精确到毫秒级C++代码实现
- java与3d建模_3d建模加载,更新和在java中呈现
- 机器学习与高维信息检索 - Note 7 - 核主成分分析(Kernel Principal Component Analysis,K-PCA)
- ATS中的动态回源插件stale-while-revalidate调研
- 风格化手绘纹理包 CGTrader – Stylized Mix Vol. 41 – Hand Painted Texture Pack
- LTE MIB 的发送周期
- Mapping Persistence Classes 笔记2---ValueType的形式和映射
- Educational Codeforces Round 54
- 从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法...
- R语言实战 - 基本统计分析(2)- 频数表和列联表