热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在外部为MySQL创建密码哈希?

我曾经能够通过sha1两次运行我的密码来创建与MySQL兼容的密码,但看起来这在MySQL8中不起作用.MySQL似乎现在使用这些密码插件.因此语法(在JS中):

我曾经能够通过sha1两次运行我的密码来创建与MySQL兼容的密码,但看起来这在MySQL 8中不起作用.

MySQL似乎现在使用这些密码插件.因此语法(在JS中):

const createUserSql = `CREATE USER ${db.escapeValue(agency.login)} IDENTIFIED WITH mysql_native_password BY ${db.escapeValue(passwordHash)};`;

我想在Node.js中创建可与MySQL一起使用的密码.我知道我可以使用纯文本密码并让MySQL哈希,但是我将这个SQL打印到终端并且我不希望密码可见,所以我想预先哈希它们.

什么算法适用于MySQL 8?我愿意使用任何内置的密码插件.

sha256_password听起来不错,但我不认为它是一个直接的sha256哈希,听起来它有一个内置的盐,所以我不知道如何在Node.js中创建一个.

MySQL PASSWORD()函数也消失了.我真的不想做一个SELECT PASSWORD(:plainTextPass)来哈希我的密码,但现在这甚至不是一个选项.

解决方法:

密码哈希不再仅基于明文计算.因此无法实现password()函数.自从5.5 btw以来就是这样:只看一下old_passwords系统变量.
从8.0开始,我们决定让身份验证插件执行散列,并且我们已经为身份验证插件API添加了新方法.
理论上我可以创建一个新的密码函数,它将采用额外的参数(身份验证方法,用户名,明文密码等)并调用相关的插件.

但无论如何,所有这些的结果都存储在mysql.user.authentication_string中.
并且始终可以通过CREATE USER … IDENTIFIED WITH … AS …语法传递回MySQL.

因此,您需要的解决方法是执行CREATE USER,然后执行SHOW CREATE USER(最后是DROP USER).

如果您仍然想要使用PASSWORD函数的变体,请在bugs.mysql.com中提交功能请求.
还有,我们也接受代码贡献:)

使用的哈希本身也不是火箭科学.我相信对于8.0的新默认身份验证方法(caching_sha256),它在这里定义:https://dev.mysql.com/doc/dev/mysql-server/latest/page_caching_sha2_authentication_exchanges.html#sect_caching_sha2_definition

因此,如果您不想对服务器进行往返,则可以使用上述定义.


推荐阅读
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 本文详细介绍了Golang中string类型的内部结构及其特性,包括字符串的定义、表示方式、数据结构以及相关的操作方法,如字符串拼接和类型转换等。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 本文深入探讨了领域驱动设计(DDD)中的聚合概念及其在事件溯源架构中的应用。聚合是一组紧密相关的类,这些类作为一个整体运作,形成一个有明确边界的组织。只有通过聚合根才能与聚合内的对象进行交互。 ... [详细]
  • ED Tree HDU4812 点分治+逆元
    这道题非常巧妙!!!我们进行点分治的时候,算出当前子节点的所有子树中的节点,到当前节点节点的儿子节点的距离,如下图意思就是当前节点的红色节点,我们要求出红色节点的儿子节点绿色节点, ... [详细]
  • iOS 小组件开发指南
    本文详细介绍了iOS小部件(Widget)的开发流程,从环境搭建、证书配置到业务逻辑实现,提供了一系列实用的技术指导与代码示例。 ... [详细]
  • 利用Cookie实现用户登录状态的持久化
    本文探讨了如何使用Cookie技术在Web应用中实现用户登录状态的持久化,包括Cookie的基本概念、优势及主要操作方法,并通过一个简单的Java Web项目示例展示了具体实现过程。 ... [详细]
  • 本文详细介绍了在MyBatis框架中如何通过#和$两种方式来传递SQL查询参数。使用#方式可以提高执行效率,而使用$则有助于在复杂SQL语句中更好地查看日志。此外,文章还探讨了不同场景下的参数传递方法,包括实体对象、基本数据类型以及混合参数的使用。 ... [详细]
  • This article explores the process of integrating Promises into Ext Ajax calls for a more functional programming approach, along with detailed steps on testing these asynchronous operations. ... [详细]
  • 本文介绍了如何使用Java编程语言实现凯撒密码的加密与解密功能。凯撒密码是一种替换式密码,通过将字母表中的每个字母向前或向后移动固定数量的位置来实现加密。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 本文探讨了在 PHP 的 Zend 框架下,使用 PHPUnit 进行单元测试时遇到的 Zend_Controller_Response_Exception 错误,并提供了解决方案。 ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 探讨如何在给定数组中寻找一个连续子数组,使其和至少达到指定值s,同时确保子数组长度最短。 ... [详细]
  • IntelliJ IDEA配置微服务启动显示
    通过编辑IntelliJ IDEA的workspace.xml文件,可以实现微服务启动对象的显示。具体步骤包括定位并修改workspace.xml中的RunDashboard部分。 ... [详细]
author-avatar
书友73892718
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有