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

【MySQL】(10)用户和权限管理

一、应用场景

        通常一个应用对应一个数据库,我们希望某个数据库只能被相关人员操纵,就需要创建用户并指定权限。只有登录该用户,才能在权限范围内操纵数据库。root 是权限最高的用户,它拥有所有的权限。

二、查询用户

        在 mysql 数据库中查看 user 表:

        Host 能限制数据库服务能被哪些 主机 / IP范围 登录。以 _priv 结尾的字段表示一些权限,Y 表示有该权限。

三、创建用户

1、语法

create user [if not exists] 'user_name'@'host_name' identified by 'auth_string';

       'user_name'@'host_name' 是用户名完整描述,user_name 和 host_name 需要分别被 ' ' 引出。如果只用一个 ' ','user_name@host_name'  表示 'user_name@host_name'@'%',任意主机都能登录,容易出现安全问题。 

2、设置主机范围

        计算方法:ip 地址是一个4字节的整数,主机 ip 地址与子网掩码做与操作。

        三种 host_name 表示方法:

  • 192.168.100.0/255.255.255.0,表示 192.168.100.0 子网中任意一台主机都能登录。
  • MySQL 8.0.23 开始,主机的 IPv4 地址可以用 CIDR 表示法指定,如:192.168.100.0/24,前 24 位表示网络,后 8 位表示主机。
  • 也可用 % 通配符,如 192.168.100.%,但是新版本已弃用,在以后可能会被删除。

3、示例

        查询本机 ip 地址:

        创建用户:

        登录:

        不指定 -h ip,默认以 localhost 地址登录。127.0.0.1、192.168.43.68 在连接时都需要指定 -h 参数,这三个地址虽然都是本地,但是 mysql 认为它们连接源并不相同。

        因为没有给用户 'user2'@'127.0.0.1' 赋予权限,所以查询不到数据库:

四、修改密码

ALTER USER 'user_name'@'host_name' IDENTIFIED BY 'auth_string';SET PASSWORD FOR 'user_name'@'host_name' = 'auth_string';SET PASSWORD = 'auth_string';  -- 为当前用户改密码

五、删除用户

drop user [if exists] 'user_name'@'host_name'[,......];

        有删除用户的权限才能执行。

六、授权与回收

        MySQL 支持的权限列表:

        授权语法:

grant 权限1[, 权限2...] on 操作范围 to 'user_name'@'host_name' [with grant option];
  • 权限:表中的 privilege。
  • 操作范围:*、*.*、db_name.*、db_name.table_name、table_name(当前数据库下某表的操作权限)。
  • with grant option:允许把自己的权限授予给别的用户。

        示例:

        当前在 root 用户:

        创建两个用户:

        使用自定义数据库,查看表:

        授予 user1 插入当前数据库的表 class 的权限,并允许将自己的权限授予其他用户:

        查看 user1 的权限:

        登录 user1,将自己的权限授予 user2,也能回收,也能授予 with grant option:

        回收权限语法:

revoke if exists 权限1[, 权限2] ON 操作范围 
from 'user_name1'@'host_name1'[, 'user_name2'@'host_name2'];

       root 用户下回收 'user1'@'localhost' 的权限,不仅有 insert,还有 grant option,不然回收不干净:

        如果权限授权或收回没生效,就刷新:

flush privileges;
http://www.xdnf.cn/news/4671.html

相关文章:

  • 基于CNN与SHAP可解释性分析的神经网络回归预测模型【MATLAB】
  • 面试问题总结(回忆版)
  • Matter协议,智能家居生态平台的“共生契约”
  • 【Redis】持久化与事务
  • 机器学习与深度学习
  • 图表制作-折柱混合
  • 【办公类-99-05】20250508 D刊物JPG合并PDF便于打印
  • TensorFlow 2.x入门实战:从零基础到图像分类项目
  • 【数据融合实战手册·应用篇】“数字孪生+视频融合”让智慧城市拥有空间感知
  • 手机隐私数据彻底删除工具:回收或弃用手机前防数据恢复
  • 美团、京东、阿里博弈下的冷思考
  • leetcode0279. 完全平方数-medium
  • 手写 Vue 源码 === 依赖清理机制详解
  • 使用 merge_asof 实现高效的时间序列匹配(无需循环)
  • rest_framework学习之认证 权限
  • 【软件设计师:数据库】13.数据库控制与安全
  • vite 代理 websocket
  • 稳定性_李雅普诺夫——Lyapunov直接法
  • 网络靶场基础知识
  • 是更换Window资源管理器的时候了-> Files-community/Files
  • 涨薪技术|0到1学会性能测试第53课-Tomcat配置
  • Python中的re库详细用法与代码解析
  • 在Lua中使用轻量级userdata在C/C++之间传递数据和调用函数
  • 探讨关于智能体(Agent)结合 Dify、大语言模型(LLM)以及 Qwen-3 模型的项目或概念
  • C++-缺省参数
  • 如何在Jmeter中调用C程序?
  • 【软考-高级】【信息系统项目管理师】【论文基础】采购管理过程输入输出及工具技术的使用方法
  • 永久免费的小工具,内嵌微软接口
  • AWS LB target group 监听端口的增加 (TCP还是UDP)
  • Redis实现分布式获取全局唯一自增ID的案例。