你的数据库安全吗-------数据库中的加密(9.3更新)

数据加密

如何能让数据库比较安全呢?

mysql中提供了一些列加密函数,加密函数主要用来对数据进行加密和界面处理,以保证某些重要数据不被别人获取。这些函数在保证数据库安全时非常有用

MD5(str)加密函数

MD5(str)为字符串算出一个MD5 128比特校验和。该值以32位十六进制数字的二进制字符串形式返回,若参数为NULL,则会返回NULL。


mysql> select md5('weyui');
+----------------------------------+
| md5('weyui')                     |
+----------------------------------+
| 0752cfa48527ad63886b069b7b191c84 |
+----------------------------------+
1 row in set (0.00 sec)

SHA(str)加密函数

SHA(str)从原明文密码str计算并返回加密后的密码字符串,当参数为NULL时,返回NULL。


mysql> select sha('weyui');
+------------------------------------------+
| sha('weyui')                             |
+------------------------------------------+
| 7769cfc05bc65a3a0468dd439c9e093869939005 |
+------------------------------------------+
1 row in set (0.00 sec)

MD5(str)与SHA(str)加密方式对比

mysql> select md5('weyui'),sha('weyui');
+----------------------------------+------------------------------------------+
| md5('weyui')                     | sha('weyui')                             |
+----------------------------------+------------------------------------------+
| 0752cfa48527ad63886b069b7b191c84 | 7769cfc05bc65a3a0468dd439c9e093869939005 |
+----------------------------------+------------------------------------------+
1 row in set (0.00 sec)

从加密后的数据来看,SHA加密算法比MD5更加安全。

SHA2(str, hash_length)加密函数

SHA2(str, hash_length)使用hash_length作为长度,加密str。hash_length支持的值为224、256、384、512和0。其中,0等同于256。

mysql> select sha2('weyui',256);
+------------------------------------------------------------------+
| sha2('weyui',256)                                                |
+------------------------------------------------------------------+
| 90a49f4112f54760730a32f1e866f058e476cf7c6c5bd728454e5796d572539d |
+------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> select sha2('weyui',0);
+------------------------------------------------------------------+
| sha2('weyui',0)                                                  |
+------------------------------------------------------------------+
| 90a49f4112f54760730a32f1e866f058e476cf7c6c5bd728454e5796d572539d |
+------------------------------------------------------------------+
1 row in set (0.00 sec)

随着加密算法的演变,加密的强度越来愈大,sha2()可以自定义加密的强度;

数据库加密的守门员--------(9.3更新)

今天突然想到了一个点,就是我们再用一些图形化软件的时候在登陆mysql8.0版本的数据库时会遇到一个问题

在输入数据库账户密码时及时密码输入正确也会提示----- 2059错误,原因就在于加密的方式不一样,

好不容易找到了一个截图—这是navicat的------
在这里插入图片描述
这是sqylog 的----
在这里插入图片描述我们当时的操作是 修改数据库的加密规则为 mysql_native_password
,在修改之前我们先查看一下数据库的账户密码加密规则----

---  通过查找参数发现默认的加密规则为caching_sha2_password---
mysql> show variables like 'default_authentication_plugin';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+
1 row in set, 1 warning (0.01 sec)

--- 再来看用户的密码加密方式
mysql> select host,user,plugin from mysql.user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | gavin            | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)

如何解决问题------ 修改加密的密码为经过— mysql_native_password 加密的格式-


mysql> alter user   用户    identified with mysql_native_password by '密码' ;
Query OK, 0 rows affected (0.03 sec)

由于密码作为数据库加密的第一道防线,sha2 的加密强度比 mysql_native_password 的方式要强,所以我们在安装的时候就会推荐我们按照 sha2 的方式加密----
在这里插入图片描述
翻了一下官方的源码-----
mysql8.0 的新特性----
caching_sha2_password as the Preferred Authentication Plugin

在这里插入图片描述

 /*This change applies only to new accounts created after installing or upgrading to MySQL 8.0 or higher. For accounts already existing in an upgraded installation, their authentication plugin remains unchanged. Existing users who wish to switch to caching_sha2_password can do so using the ALTER USER statement:*/

ALTER USER user
  IDENTIFIED WITH caching_sha2_password
  BY 'password';

根据官方给出的代码,我们改回 mysql_native_password 不难吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeMartain

祝:生活蒸蒸日上!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值