我肯定错过了什么.

我想为select-only事务设置数据库用户帐户,但mysql不允许我在创建用户帐户时选择密码的哈希方法.

这失败了:

GRANT SELECT ON myDB.* TO 'selectuser'@'localhost'

IDENTIFIED BY hash('sha256', 'salted-myfakelongrandompasswordstring');

错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的’hash(‘sha256′,’salted-myfakelongrandompasswordstring’)附近使用正确的语法

这传递:

GRANT SELECT ON myDB.* TO 'selectuser'@'localhost'

IDENTIFIED BY 'salted-myfakelongrandompasswordstring';

我检查了phpinfo页面,并且已经启用了sha256哈希引擎.

有没有办法更改mysql的默认哈希算法,或者我的SQL语法是否正确?

解决方法:

不,您不应该使用自己的密码哈希进行MySQL身份验证.

MySQL使用自己的密码散列函数(PASSWORD()),它产生一个41字节的十六进制字符串(基于将SHA1应用于输入两次).不幸的是,没有使用盐.

如果您能够以问题中显示的方式使用GRANT,那么MySQL会将其PASSWORD()函数应用于hash()函数的字符串输出.随后,当您要登录时,您必须输入密码的256位哈希值,以便与MySQL身份验证数据库中的内容进行匹配.

此外,MySQL支持MySQL 6.0.5中的SHA2()系列哈希函数.

hash()函数是你可能从PHP中记住的东西.它不是MySQL的一部分.

更新:本周我参加了MySQL大会,发现他们正在完全改变未来产品版本号的路线图. SHA2()函数目前是MySQL源代码的一部分,但它未确定对应的产品版本.此外,您需要使用OpenSSL / YaSSL支持构建的MySQL,以便SHA2()能够正常工作.

重新评论:通常,MySQL身份验证与给定Web应用程序中的用户帐户身份验证完全分开(出于多种原因,这是最佳做法).

是的,您需要为您的Web应用程序硬编码MySQL身份验证的用户名/密码.可能在,但更好的是配置文件.当然,把这些放在web根目录之外.

当用户需要登录时,计算其输入密码的hash(),并结合其帐户记录的salt值.然后将其与存储在该用户的数据库中的哈希进行比较.在伪代码中:

$salt = $db->query("SELECT salt FROM Accounts WHERE account_name = ?",

$input_account_name);

$password_hash = hash('sha256', $salt + $input_password)

$is_password_correct = $db->query("SELECT password_hash = ?

FROM Accounts WHERE account_name = ?",

$password_hash, $input_account_name);

标签:mysql,passwords,hash,salt

来源: https://codeday.me/bug/20190622/1260567.html

mysql 密码hash算法_如何用hash创建一个mySQL用户(‘sha256’,$salt.$password)?相关推荐

  1. vscode如何创建一个go项目_如何用手机创建一个网站

    如何用手机创建网站?其实正确的说法是如何创建一个手机网站才对,因为很难用手机去制作网站,很不方便.一般是用电脑模拟手机去建网站. 我们知道现在很多人上网都是通过手机上网,所以我们自己建网站时,也要学会 ...

  2. java 如何创建一个数组_如何用Java创建一个数组?

    在Java中,可以使用new关键字像对象一样创建数组.使用new关键字在Java中创建数组的语法-type[] reference = new type[10]; 哪里,type是数组元素的数据类型. ...

  3. 命令创建mysql数据库_怎么在命令行创建一个mysql数据库

    哆啦的时光机 第一步:登陆到MySQL服务器 首先,你需要使用root用户登陆进你的MySQL数据库,如下: $ mysql -u root -h -p 请注意:为了能登进远程的MySQL服务器,你需 ...

  4. hash算法_到底什么是Hash?Hash算法的原理和实际应用讲解

    提到hash,相信大多数同学都不会陌生,之前很火现在也依旧很火的技术区块链背后的底层原理之一就是hash,下面就从hash算法的原理和实际应用等几个角度,对hash算法进行一个讲解. 1.什么是Has ...

  5. hash算法_一致性hash算法简介

    一致性hash算法有什么用?我们为什么需要一致性hash算法?这两个问题的答案可以看这篇文章 分布式系统路由算法简介. 了解了一致性hash算法出现的背景,我们来看看什么是一致性hash算法.一致性h ...

  6. 一致性hash算法_(图文案例)一致性哈希算法详解 一点课堂(多岸教育)

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

  7. mysql与sqlyog连接_如何用sqlyog实现远程连接mysql

    1,sqlyog客户端,用root用户远程链接mysql时,提示"访问被拒绝",在网上搜索了一下原因. 原来是mysql没有授权其远程链接,所以你只能在客户端里面链接. 怎么解决呢 ...

  8. mysql密码认证插件_关于mysql:无法加载身份验证插件’caching_sha2_password’

    我正在将MySQL-8.0与MySQL Workbench连接起来并出现以下错误: Authentication plugin 'caching_sha2_password' cannot be lo ...

  9. 怎么进入命令行操作mysql数据库_MySQL数据库之如何用命令行进入mysql具体操作步骤...

    本文主要向大家介绍了MySQL数据库之如何用命令行进入mysql具体操作步骤 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 如何用命令行进入mysql?最近无意在论坛上看到有朋 ...

最新文章

  1. 【转】《iOS7 by Tutorials》系列:iOS7的设计精髓(上)
  2. qt 单元格加上边框_Excel如何自动添加边框?学会这个方法效率加倍!
  3. 网络营销第三课:利用织梦搭建动态网站(2)
  4. 四. RxJava之基本原理
  5. Pwn环境配置(二)——VMware虚拟机安装Ubuntu 16.04系统
  6. 【CF1020C】Election【贪心】
  7. 一道非常棘手的 Java 面试题:i++ 是线程安全的吗
  8. 删除win7多余的系统还原点_【Win7封装教程2019版】系列(二)必要的系统调整
  9. vue+filter过滤器(多参数)传参 - 代码篇
  10. python大佬养成计划-----多进程
  11. HTTP与HTTPS简介
  12. java函数式编程入口_Java中的函数式编程
  13. 数据挖掘中最易犯的10个错误,请绕行!
  14. 51单片机蓝牙遥控风扇期末设计报告
  15. vr全景拍摄教程,怎样拍摄vr全景照片?
  16. 加减乘除等符号大全中英对照,在英语中的用法
  17. 双重检测加锁为什么要使用volitail_volitail关键字
  18. 「BUG记录」关于在安装AD9910 Evaluation Software过程中遇到的问题
  19. [转帖]全球软件市场格局变化
  20. 江苏学生考计算机要多少分录取,江苏高考多少名可以上211 最低要考多少分

热门文章

  1. URAL - 1732 Ministry of Truth--kmp算法的应用(kmp模板)
  2. 区域赛铜牌专题(一)
  3. Hard Disk Drive HDU - 4788
  4. 蓝桥杯国赛 皮亚诺曲线距离
  5. 牛客题霸 [斐波那契数列] C++题解/答
  6. 1147 Heaps
  7. [2.7]【CF933A】A Twisty Movement【CF926B】Add Points【CF917A】The Monster【CF919E】Congruence Equation
  8. Star Way To Heaven (prim最小生成树) // [ NOIP提高组 2014]飞扬的小鸟(DP)
  9. [USACO19JAN,Platinum]Train Tracking 2
  10. [2020.11.25NOIP模拟赛]出租车【dp】