msyql (8.4,9.0) caching_sha2_password 转换 mysql_native_password用户认证

news2024/9/19 6:38:33

mysql 前言

caching_sha2_password 主要特性

用于增强用户账户密码的存储和验证安全性。这种插件利用 SHA-256 散列算法的变体来存储和验证密码

  • 安全的密码散列caching_sha2_password 使用基于 SHA-256 的算法来生成密码的散列值。这意味着即使数据库被未授权访问,攻击者也很难从散列值逆向推导出原始密码。

  • 动态盐值: 在散列过程中,使用随机生成的盐值来进一步增强密码的安全性。盐值是在每个散列操作中动态生成的,增加了暴力破解的难度。

  • 内存缓存: 插件在内存中缓存最近的登录尝试,以提高性能。这避免了在每个登录尝试时都需要重新计算密码散列值,从而提高了登录速度。

  • 安全性增强: 由于使用了更安全的散列算法和动态盐值,caching_sha2_password 提供了比旧的 mysql_native_password 插件更好的安全性。它还要求使用安全连接或 RSA 密钥对进行未加密连接上的密码交换,以防止中间人攻击。

mysql_native_password 主要特性

是 MySQL 中用于用户身份验证的一种插件,它是 MySQL 5.7 及更早版本中的默认身份验证插件。此插件使用了一种基于挑战-响应(challenge-response)机制的本地验证方法,其中密码被散列并存储在数据库的 mysql.user 表中。

散列过程 在 mysql_native_password 插件中,密码的散列过程涉及 SHA-1(Secure Hash Algorithm 1)算法。当用户创建或更改密码时,MySQL 会将密码散列两次,然后将结果存储在 mysql.user 表的 authentication_string 字段中。具体步骤如下:

  • 第一次散列:使用 SHA-1 对密码进行散列。
  • 第二次散列:将第一次散列的结果作为输入再次进行 SHA-1 散列,产生最终的散列值。

登录验证 当用户尝试登录时,MySQL 会执行以下步骤进行验证:

  • 使用相同的散列过程对用户提供的密码进行散列。
  • 将生成的散列值与存储在 mysql.user 表中的散列值进行比较。
  • 如果散列值匹配,则允许用户登录;如果不匹配,则拒绝登录。

安全性考量

虽然 mysql_native_password 插件提供了基本的安全保障,但由于使用了 SHA-1 散列算法,其安全性已经受到质疑。SHA-1 的碰撞攻击已经变得可行,这意味着两个不同的输入可能产生相同的散列值,这会降低密码的安全性。

设置身份认证

  • 身份验证插件参考
  • mysql_native_password 官网在新版8.4,9.0 不建议在使用 参考
  • 基于之前使用的密码哈希方法 引入可插拔身份验证 mysql_native_password 参考
  • my.cnf 配置文件增加mysql_native_password=ON 开启,需要关闭的OFF即可
  • 初始化root用户密码,root 远程登录权限 ,mysql_native_password用户日志
  • 创建用户密码dbadmin/dbadmin@123管理权限,mysql_native_password用户日志
  • 创建备份用户backup/backup@123 用户数据库备份,mysql_native_password用户日志
#Define MYSQL path variables
mysql_user=mysql

mysql_user_root=root
mysql_user_password=root@123

mysql_user_dba=dbadmin
mysql_user_dba_password=dbadmin@123

mysql_user_backup=backup
mysql_user_backup_password=backup@123

mysql_data_database=mysql_data
DATA_CATALOGUE=/data


#初始化root 密码,使用mysql_native_password认证
mysql -S $DATA_CATALOGUE/$mysql_data_database/$mysql_sock -p`cat /var/log/mysql.log | grep 'password is generated' | awk '{print $NF}'` --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$mysql_user_password'; flush privileges;"

#赋予root 远程登录权限
mysql -u"$mysql_user_root" -p"$mysql_user_password" -e "use $mysql_user; update user set host = '%' where user = 'root'; FLUSH PRIVILEGES; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '$mysql_user_password';"

#创建用户backup 用户,使用mysql_native_password认证
mysql -u"$mysql_user_root" -p"$mysql_user_password" -e "CREATE USER '$mysql_user_backup'@'%' IDENTIFIED WITH mysql_native_password BY '$mysql_user_backup_password'; GRANT SELECT, PROCESS, RELOAD, LOCK TABLES ON *.* TO '$mysql_user_backup'@'%'; FLUSH PRIVILEGES;"

#创建DBA用户,使用mysql_native_password认证
mysql -u"$mysql_user_root" -p"$mysql_user_password" -e "CREATE USER '$mysql_user_dba'@'%' IDENTIFIED WITH mysql_native_password BY '$mysql_user_dba_password'; GRANT ALL PRIVILEGES ON *.* TO '$mysql_user_dba'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;"

mysql 备份脚本

  • 数据库所有库备份
  • 数据备份位置/data/backup
vim /mysql_backup.sh
#!/bin/bash
# -*- coding: utf-8 -*-
# Author: make.han 
# Email:CIASM@CIASM
# Date: 2024/07/18
# mysql backup 

#Setting a Backup Directory
BACKUP_DIR="/data/backup"

# Example Set the MySQL login information
MYSQL_USER="backup"
MYSQL_PASSWORD="backup@123"

# Ensure the backup directory exists
if [ ! -d "$BACKUP_DIR" ]; then
    mkdir -p "$BACKUP_DIR"
fi

# Current date and time, used to name the backup file
DATE=$(date +%Y%m%d-%H%M%S)

# Run all the mysqldump command
mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD --all-databases --single-transaction > "$BACKUP_DIR/ciasmall_db_backup_$DATE.sql"

# Single library backup
#mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD --single-transaction $MYSQL_data > "$BACKUP_DIR/ciasm_db_backup_$DATE.sql"

# Check whether the backup file is successfully created
if [ $? -eq 0 ]; then
    echo "Backup completed successfully."
else
    echo "Backup failed."
fi

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

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

相关文章

【JS特效之手风琴效果】基于jquery实现手风琴网页特效(附源码)

HTMLCSSJS手风琴效果目录 🍔涉及知识🥤写在前面🍧一、网页主题🌳二、网页效果🐋三、网页架构与技术3.1 脑海构思3.2 实现原理 🌈四、网页源码4.1 手风琴模块4.2 完整源码获取方式 🌅 作者寄语 &…

机械学习—零基础学习日志(高数05——函数概念与特性)

零基础为了学人工智能,真的开始复习高数 本小节讲解隐函数,有点神奇,我竟然完全没有隐函数记忆了。 隐函数 隐函数,我个人通俗理解就是,在复杂的环境里,发现纯净天地。例如,在外太空的某个大陆…

《JavaSE》---14.<面向对象系列之(附:this和super关键字)>

目录 系列文章目录 前言 一、为什么要有this引用 1. 用代码看有this与无this的区别 1.1 代码示例 1.2 输出结果: 1.3 代码示例: 1.4 输出结果: 2. this深度理解 3. 什么是this引用 3.1 this引用的概念 4. this引用的特性 二、th…

【TAROT学习日记】韦特体系塔罗牌学习(5)——皇帝 THE EMPEROR IV

韦特体系塔罗牌学习(5)——皇帝 THE EMPEROR IV 目录 韦特体系塔罗牌学习(5)——皇帝 THE EMPEROR IV牌面分析1. 基础信息2. 图片元素 正位牌意1. 关键词/句2.爱情婚姻3. 学业事业4. 人际财富5. 其他象征意 逆位牌意1. 关键词/句2…

大盘周期性复苏之际,英诺赛科的新叙事如何开讲?

半导体行业已经开始周期性复苏。 据同花顺iFinD统计,截至目前,已有37只半导体个股披露了上半年业绩预告,其中27股预喜,或扭亏或预增,预喜率超七成,长川科技净利预增幅度位居第一,暂列上半年半导…

Cadence OrCAD Capture原理图搭建及仿真方法

1 安装Cadence Allegro 略。 2 搭建原理图 2.1 打开软件 1、点击Capture CIS。 2、在弹出的产品选择栏点击OrCAD Capture,点击OK。 打开的软件界面如下: 2.2 新建工程 1、点击左上角File,New,Project,或者直接点…

王权与自由Steam国际服下载教程分享

王权与自由,一款集合了所有mmorpg游戏内玩法的游戏,包含爬塔、小队副本、团队副本、休闲竞技、装备打造、人物养成、攻城战、大型的pvp团战等多种游戏玩法,在游戏中只有我们想不到的内容,没有游戏不包含的内容,而且有意…

【Git远程操作】克隆远程仓库 https协议 | ssh协议

目录 前言 克隆远程仓库https协议 克隆远程仓库ssh协议 前言 这四个都是Git给我们提供的数据传输的协议,最常使用的还是https和ssh协议。本篇主要介绍还是这两种协议。 ssh协议:使用的公钥加密和公钥登录的机制(体现的是实用性和安全性&am…

AIGC工具:IPAdapter和ControlNet 指导控制生成工具

ControlNet强调对生成过程的直接控制,如通过线条、边缘、形状等信息;而IPAdapter侧重于风格迁移和内容的间接引导。 IPAdapter 它专注于通过迁移图片风格来生成新的图像内容。IPAdapter的强项在于能够将一张图片的风格迁移到另一张图片上,实现风格融合,甚至可以进行多图风格…

【Android】ConstrainLayout约束布局基本操作

文章目录 介绍约束条件添加方式外边距设置删除方式 添加约束条件父级位置对齐方式基线对齐引导线约束屏障约束 约束偏差使用链控制线性组 介绍 约束布局ConstraintLayout是 Android Studio 2.3 起创建布局后的默认布局 主要是为了解决布局多层嵌套问题,以灵活的方式…

【你也能从零基础学会网站开发】 SQL Server 2000企业管理器基本介绍

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 SQL Server 20…

idea 配置jdk21 后 控制台中文乱码问题

1、 选择 add VM 填写:-Dfile.encodingGBK -Dfile.encodingGBK

Node对接支付宝沙箱完成支付完整流程

沙箱支付完整流程 一、进入支付宝沙箱网站二、进入沙箱环境三、下载【支付宝开放平台开发助手】四、打开【支付宝开放平台开发助手】工具,进行设置五、点击生成密钥点击打开文件位置 六、密钥格式转换七、回到沙箱配置密钥八、粘入应用工具九、需要应用的信息十、进…

算法:队列+宽搜

目录 题目一:N 叉树的层序遍历 题目二:二叉树的锯齿形层序遍历 题目三:二叉树最大宽度 题目四:在每个树行中找最大值 题目一:N 叉树的层序遍历 给定一个 N 叉树,返回其节点值的层序遍历。(…

智能图片识别表格

文章目录 在线体验快速开始一、项目介绍篇1.1 PP-Structure概述1.2 PP-Structure核心功能:表格识别1.3 PP-Structure特点1.4 模块介绍1.4.1 TableDec.py1.4.2 app.py 二、核心代码介绍篇2.1 app.py2.2 TableDec.py2.3 扩展-模型选择3.4.1 版面分析模型3.4.2 表格识别…

Linux-mysql数据备份恢复

MySQL数据备份与恢复 一、备份介绍 1、为什么要备份 备份:能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。 冗余: 数据有多份冗余,但不等备份,只能防止机械故障带来的数据丢…

netty如何结合Zookeeper如何高并发的代码实现步骤 —— 慧哥充电桩开源平台

Netty是一个高性能、异步事件驱动的NIO(非阻塞IO)网络通信框架,而Zookeeper是一个分布式、开放源码的分布式应用程序协调服务,常用于维护配置信息、命名空间和提供分布式同步。 在高并发环境下,Netty与Zookeeper的结合…

昇思25天学习打卡营第13天 | mindspore 实现 ShuffleNet 图像分类

1. 背景: 使用 mindspore 学习神经网络,打卡第 13 天;主要内容也依据 mindspore 的学习记录。 2. 迁移学习介绍: mindspore 实现 ShuffleNet 图像分类; ShuffleNet 基本介绍: ShuffleNetV1 是旷视科技提…

RabbitMQ学习实践一:MQ的安装

文章是本人在学习springboot实现消息队列功能时所经历的过程的记录,仅供参考,如有侵权请随时指出。 参考文章地址: RabbitMQ安装与入门_rabbitmq win11配置-CSDN博客 RabbitMQ入门到实战一篇文章就够了-CSDN博客 RabbitMQ系列&#xff08…

进程通信(5):POSIX消息队列

随进程持续:IPC对象一直存在直到最后一个进程关闭该对象为止(管道和FIFO)。 随内核持续:IPC对象存在一直到内核自举(系统重新启动)或者显示删除该对象。 如System V消息队列,System V信号量,S…