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

13-MySQL用户管理

💬 :如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区畅所欲言!我们一起学习、共同成长~!

👍 :如果你觉得这篇文章还不错,不妨顺手点个赞、加入收藏,并分享给更多的朋友噢~!


1. 引言

在 MySQL 使用中,直接使用root用户存在严重安全隐患 ——root拥有所有数据库的操作权限,若被滥用或泄露,可能导致数据丢失、篡改等风险。例如,假如张三只能操纵mytest库,李四只能操纵msg库,若给他们root账户,两人可操作所有库,风险极高。因此,MySQL 用户管理(创建用户、分配权限、密码维护等)是 C++ 面试 / 笔试的高频基础考点。C++ 开发中连接 MySQL 时,需创建仅含必要权限的用户,而非直接使用root


2. MySQL 用户核心操作

2.1 查看用户信息

  • 面试高频基础题:“MySQL 用户信息存在哪里?”
    答:MySQL 的所有用户信息均存储在系统数据库mysqluser表中。
  • 本章所有操作在mysql库中进行。
-- 1. 切换到mysql系统数据库
use mysql;-- 2. 查询关键字段
select host, user, authentication_string from user;
-- desc user;查看user表完整结构

关键字段含义
host用户允许登录的主机或IP 。localhost表示仅本机登录,%表示任意主机登录。
user用户名
authentication_string用户加密密码(通过password()函数加密后的字符串)
..._priv用户权限(如Select_priv表示查询权限,Create_priv表示创建权限)

2.2 用户创建

2.2.1 创建语法与实战案例

create user '用户名'@'允许登录的主机/IP' identified by '密码';
  • 面试必考题:“如何创建一个仅能在本机登录的 MySQL 用户?” 

案例如下:

查询结果中新增一行:| lyl1 | localhost | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1 |,表示用户创建成功,可使用用户名或密码在本机登录。

2.2.2 密码策略问题与注意事项

创建用户时常见问题是出现这样的报错:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

这是 MySQL 默认密码策略导致的,面试可能问 “如何解决密码不满足策略的问题?”

(1)查看密码策略:show variables like 'validate_password%';(无需深研,了解即可)

(2)按策略要求设置复杂密码。

  • 核心注意事项:禁止随意创建host%的用户%表示任意主机可登录,极大增加安全风险),C++ 开发中需根据程序部署位置指定固定主机。

 2.3 密码修改

2.3.1 自我修改与 root 代改

密码修改分两种场景,面试需区分清楚:

  1. 用户自我修改密码(当前登录用户修改自己的密码):

    set password = password('新密码');
    
  2. root 用户修改其他用户密码(需指定目标用户的host):

    set password for '用户名'@'允许登录的主机/IP'=password('新密码');

    案例:root修改'lyl1'@'localhost'的密码为'87654321'

    set password for 'lyl1'@'localhost'=password('87654321');-- 验证密码已更新(authentication_string字段值变化)
    select host,user,authentication_string from user;
    

注意password()函数用于加密密码,确保存储在user表中的是密文(安全考点)。

2.4 用户删除

2.4.1 常见错误操作与正确操作

删除用户的面试高频易错点必须指定host(允许登录的主机/IP),否则 MySQL 默认按'用户名'@'%'查找,若不存在该用户则报错。

错误操作:仅写用户名,未指定host

drop user lyl1;

正确操作:明确指定host(与创建时的host一致)

drop user 'lyl1'@'localhost';-- 验证删除结果
select user,host,authentication_string from user;


3. MySQL 权限管理

新创建的用户默认无任何权限,需通过 “授权” 赋予操作能力;若权限过度,需 “回收”。权限管理是 C++ 开发的核心(如 C++ 程序若仅需查询test库,就只给select权限)。

3.1 常用权限与场景

权限作用场景适用上下文(库 / 表)
select查询表数据(如 C++ 程序读取 MySQL 数据)数据库、表
insert插入数据(如 C++ 程序写入数据到表)
update修改表数据(如 C++ 程序更新用户信息)
delete删除表数据(如 C++ 程序删除过期记录)
create创建数据库 / 表(如初始化程序创建表)数据库、表
drop删除数据库 / 表(谨慎赋予)数据库、表
all privileges所有权限(非root慎用)数据库、表

3.2 授权操作

3.2.1 授权语法与案例验证

授权核心语法(面试必背

grant 权限列表 on 库.对象名 to '用户名'@'登录位置' [identified by '密码'];
  • 权限列表:多个权限用逗号分隔(如select,insert),或用all表示所有权限;
  • 库.对象名*.*表示所有库所有表,test.*表示test库所有表(常用test.account表示test库的account表;
  • identified by(可选):若用户已存在,可同时修改密码;若用户不存在,相当于 “创建用户 + 授权”。

实战案例(给lyl2赋予test3库的select权限):

(1)在当前root用户登录的终端创建用户lyl2:

(2)Win+R进入cmd打开新终端,通过mysql -u lyl2 -p登录lyl2用户,然后查看未授权前lyl2的权限:

(3)root 用户终端授权:

(4)lyl2用户终端查看授权后lyl2的权限并验证:

执行未授权的权限会报错:

3.2.2 查看用户权限

查看用户已拥有的权限面试常用操作):

show grants for '用户名'@'登录的主机/IP';

查看root权限(root拥有所有权限):

show grants for 'root'@'登录的主机/IP';

  • ALL PRIVILEGES :所有操作权限。

  • PROXY :代理权限,即可以代操作其他用户权限。

3.3 权限回收

3.3.1 回收语法与生效验证

若用户权限过大,需回收多余权限,核心语法(与授权对应):

revoke 权限列表 on 库.对象名 from '用户名'@'登录位置';

实战案例(回收lyl2test3库所有权限):

(1)root 用户终端回收权限:

(2)lyl2用户终端验证:

  • 面试考点:权限赋完没生效怎么办?
    答:执行flush privileges;刷新权限。


4. 面试高频考点总结

结合 C++ 开发场景,MySQL 用户管理的面试核心考点如下,需完全掌握:

  1. 用户信息存储:用户信息存在mysql库的user表中,关键字段host(登录主机)、user(用户名)、authentication_string(加密密码)。
  2. 创建用户的host含义localhost仅本机登录,%任意主机(禁止随意使用),固定 IP(如192.168.1.100)适合 C++ 程序部署场景。
  3. 删除用户的坑:必须指定host,否则默认按'用户名'@'%'查找,导致报错。
  4. 授权通配符*.*所有库表,库.*指定库所有表(C++ 开发常用)。
  5. 权限不生效解决方案:执行flush privileges;刷新权限。
  6. 密码策略问题:简单密码报错(ERROR 1819),可通过SHOW VARIABLES LIKE 'validate_password%';查看策略。
  7. C++ 开发安全原则:禁止用root连接 MySQL,需创建仅含必要权限的用户(如仅select+insert权限)。

http://www.dtcms.com/a/564716.html

相关文章:

  • 泰安放心的企业建站公司母婴网站源码 带采集
  • 做手机旅游网站徐州市制作网站的公司
  • 关于数控滑台
  • 数学中“必要条件”和“充分条件”大白话理解
  • 实验十一 三维观察实验
  • 【AI编码】VS Code - continue - github copolit
  • UVa 12298 Super Poker II
  • SQL视图:虚拟表的完整指南
  • 经纪柜台系统---拥有1.4.9号香港牌照的优选
  • 遵义网站建设天津做网站好的公司有哪些
  • 网站建设 响应式手机app制作网站
  • Elasticsearch 的 Routing 策略详解
  • GIT命令常用方法
  • Python计算题类相关实战
  • 常用es sql
  • 网站系统管理员烟台专业网站推广
  • 理论及算法_时间抽取论文
  • React中useContext的基本使用和原理解析
  • 重庆网站建设公司是什么意思可信赖的做网站
  • 【js逆向案例四】小红书
  • Next.js路由系统
  • 6、webgl 基本概念 + 四边形纹理
  • 【weblogic】XML反序列化漏洞
  • 20-控制流多次异步
  • Python Seaborn详解:让数据可视化更简单、更美观的利器
  • 基于c 的网站开发河北邢台路桥建设公司网站
  • VivaCut 4.4.0 | 专业的视频剪辑编辑制作工具,有非常多的特效,可替代剪映
  • CY5-α-酮戊二酸,(CY5-α-Ketoglutarate, CY5-α-KG)
  • Matlab模拟对流方程迎风格式验证
  • LeetCode 面试经典 150_二叉树_相同的树(68_100_C++_简单)(DFS)