当前位置: 首页 > news >正文

21.加密系统函数

以下是对这些 MySQL 函数的总结,包含功能、用法示例和注意事项,方便你理解学习:

1. USER() 函数

  • 功能:获取当前登录 MySQL 数据库的用户信息(包含用户名和主机地址,格式一般是 用户名@主机地址 )。
  • 示例
SELECT USER();
-- 假设用 root 用户本地登录,可能返回 root@localhost
  • 用途:快速查看当前操作数据库的用户身份,排查权限相关问题(比如确认是不是用错了账号 )。

2. DATABASE() 函数

  • 功能:获取当前正在使用(选中)的数据库名称。如果没选数据库(没执行 USE 数据库名 ),返回 NULL
  • 示例
-- 先选中数据库
USE date_functions_test; 
SELECT DATABASE();
-- 返回 date_functions_test
  • 用途:写通用 SQL 脚本时,动态确认当前上下文的数据库,避免因选错库导致执行错误。

3. MD5(str) 函数

  • 功能:对输入的字符串 str 做 MD5 哈希运算,生成一个 32 位的十六进制字符串(常用于简单加密场景,比如用户密码存储,但 MD5 已不太安全,现在更多用更安全的哈希算法 )。
  • 示例
SELECT MD5('123456');
-- 可能返回 e10adc3949ba59abbe56e057f20f883(固定结果,相同字符串 MD5 值固定 )
  • 用途:早年常用来存密码(现在推荐用 PASSWORD() 或更安全的加密方式,比如 SHA2() )、生成数据唯一标识(但要注意哈希冲突 )。

4. PASSWORD(str) 函数

  • 功能:专门用于 MySQL 数据库内部,对字符串 str 进行加密,生成适合存储在 mysql.user 表的密码格式(是 MySQL 自定义的加密逻辑,不同版本可能有差异 )。
  • 示例
-- 模拟给密码 'mypassword' 加密
SELECT PASSWORD('mypassword'); 
-- 返回类似 *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 这样的加密字符串
  • 用途:主要在管理 MySQL 用户、手动设置密码时用(比如直接改 mysql.user 表密码字段 ),但要注意,它是 MySQL 特定的加密方式,通用性差,且不同版本加密逻辑可能不兼容。

5. 补充对比 & 注意事项

函数

特点

适用场景

安全性/注意点

USER()

查当前登录用户

权限排查、日志记录

无特殊风险,纯信息查询

DATABASE()

查当前选中的数据库

脚本动态适配、多库操作

没选库时返回 NULL

MD5()

通用 32 位哈希,结果固定

简单加密、生成标识

已不算安全,易被暴力破解

PASSWORD()

MySQL 专属密码加密

手动管理 MySQL 用户密码

仅限 MySQL 内部用,通用性极差

现在实际开发中,存密码更推荐用 SHA2(str, 256) 这类更安全的哈希,或者结合盐值(salt)加密;PASSWORD() 基本只在运维 MySQL 系统用户时偶尔用到,学习时了解其功能即可~

6. 示例

(1)查看当前登录用户

SELECT USER();

(2)查看当前使用的数据库

SELECT DATABASE();  -- 若未执行 USE,返回 NULL

(3)模拟用户密码存储

SELECT 'user1' AS username,'password123' AS plaintext_password,MD5('password123') AS encrypted_password;

(4)验证 MD5 的固定性(相同输入生成相同输出)

SELECT MD5('hello') AS hash1,MD5('hello') AS hash2;  -- hash1 和 hash2 结果相同

(5)模拟 MySQL 用户密码加密过程

SELECT 'new_password' AS plaintext,PASSWORD('new_password') AS mysql_encrypted;

相关文章:

  • 海豚人工智能与大数据实验室的指导和系统内的指导文件是不一样的​
  • Pandas 中的 Period 对象
  • Android 中 解析 JSON 字符串的几种方式
  • man 的用法
  • 数据卷能管理两边,使其数据一致?——补充
  • 5G光网络新突破:<Light: Science Applications>报道可适应环境扰动的DRC实时校准技术
  • FPGA基础 -- Verilog行为建模之循环语句
  • WordPress用 Options Framework 创建一个自定义相册功能
  • linux内核调试
  • 【JUC】显示锁
  • 【计算机常识】--docker入门+docker desktop的使用(一)
  • 【JAVA】的SPI机制
  • 对象模型与LLM融合:人形机器人的智能革命与产业化路径
  • 基于Cookie和Session的模拟登录爬取实战:突破登录认证的高级技术
  • eps转pdf-2025年6月18日星期三
  • 【为什么在触发的事件中修改控件属性需要使用`Invoke`】
  • 轻量化分布式AGI架构:基于区块链构建终端神经元节点的互联网智脑
  • python实战项目75:爬取nature《自然》杂志论文信息
  • tomcat 配置规范
  • 【Python与生活】如何实现一个条形码检测算法?
  • 用ssh做的网站/郑州网站推广公司咨询
  • 自己创业做网站/品牌推广活动策划方案
  • wordpress 替换google/烟台seo网络推广
  • 南宁市营商环境建设局网站/中文网站排行榜
  • 网站建设价值/google play store
  • 如何查看百度蜘蛛来过网站/北京网站制作400办理多少钱