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

MySQL学习笔记之用户管理与权限控制(DCL)

文章目录

    • MySQL 用户管理与权限控制
      • 用户管理(DCL - Data Control Language)
        • 1. 查询用户
        • 2. 创建用户
        • 3. 修改用户密码
        • 4. 删除用户
      • 权限控制(DCL - Data Control Language)
        • 1. 查询权限
        • 2. 授予权限
        • 3. 撤销权限
      • 总结
      • 完整代码
      • <br />

MySQL 用户管理与权限控制

用户管理(DCL - Data Control Language)

用户管理主要涉及创建、修改和删除数据库用户。以下是常用的用户管理操作及其语法说明:

1. 查询用户
-- 切换到mysql数据库
USE mysql;-- 查询所有用户
SELECT * FROM user;

说明SELECT * FROM user; 查询mysql系统数据库中的user表,以查看所有用户的信息。



2. 创建用户
-- 创建一个用户 'itcast',只允许从当前主机 'localhost' 访问,密码为 '666666'
CREATE USER 'itcast'@'localhost' IDENTIFIED BY '666666';-- 创建一个用户 'enhuan',允许从任意主机访问,密码为 '666666'
CREATE USER 'enhuan'@'%' IDENTIFIED BY '666666';

说明

  • CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; 语法用于创建新用户。
  • localhost 表示用户只能从本地访问。
  • % 是通配符,表示用户可以从任何主机访问。

注意

  • 如果需要创建多个用户,可以重复使用 CREATE USER 语句。
  • 用户名和密码应该符合安全规范,例如使用强密码。



3. 修改用户密码
-- 修改用户 'enhuan' 的密码为 '888'
ALTER USER 'enhuan'@'%' IDENTIFIED WITH mysql_native_password BY '888';

说明

  • ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码'; 语法用于修改用户的密码。
  • mysql_native_password 是认证插件,用于设置新的密码。



4. 删除用户
-- 删除用户 'itcast'@'localhost'
DROP USER 'itcast'@'localhost';

说明

  • DROP USER '用户名'@'主机名'; 语法用于删除现有用户。
  • 删除用户后,用户将无法再访问MySQL服务器,因此应谨慎操作。

注意

  • 主机名可以使用 % 通配符来表示任意主机。
  • 这类操作通常由数据库管理员(DBA)进行,开发人员相对较少操作。
  • 删除用户不会自动删除与该用户关联的数据或权限,这些可能需要额外的清理操作。




权限控制(DCL - Data Control Language)

权限控制用于授予或撤销用户对数据库对象的访问权限。以下是常用的权限控制操作及其语法说明:

1. 查询权限
-- 查询用户 'enhuan'@'%' 的权限
SHOW GRANTS FOR 'enhuan'@'%';

说明

  • SHOW GRANTS FOR '用户名'@'主机名'; 语法用于查看指定用户的权限。
  • 该命令返回一个或多个 GRANT 语句,显示用户的权限设置。



2. 授予权限
-- 授予用户 'enhuan'@'%' 对 'itenhuan' 数据库下所有表的所有权限
GRANT ALL ON itenhuan.* TO 'enhuan'@'%';

说明

  • GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; 语法用于授予用户对指定数据库和表的权限。
  • ALL 表示授予所有权限。
  • * 通配符表示所有表。

注意

  • 权限授予应遵循最小权限原则,只授予用户其需要的权限。
  • 如果需要授予特定权限,例如只读权限,可以指定具体权限列表,如 SELECTINSERT



3. 撤销权限
-- 撤销用户 'enhuan'@'%' 对 'itenhuan' 数据库下所有表的所有权限
REVOKE ALL ON itenhuan.* FROM 'enhuan'@'%';

说明

  • REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名'; 语法用于撤销用户对指定数据库和表的权限。

注意

  • 多个权限之间使用逗号分隔。
  • 授权和撤销时,数据库名和表名可以使用 * 通配符,表示所有。

总结

  • 用户管理 涉及用户的创建、修改密码和删除操作,主要用于数据库的维护和管理。
  • 权限控制 涉及授予和撤销用户对数据库的访问权限,以确保用户只能执行其被授权的操作。
  • 在进行这些操作时,应注意权限的最小化原则,确保每个用户仅能访问和操作其必要的数据。




完整代码

-- DCL-管理用户
-- 1.查询用户
--   use mysql;
--   select * from user;
-- 2.创建用户
--   create user '用户名'@'主机名' identified by '密码';
-- 3.修改用户密码
--   alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
-- 4.删除用户
--   drop user '用户名'@'主机名';-- 注意:
--   主机名可以使用%通配。
--   这类SQL开发人员操作的比较少,主要是DBA(Database Administrator 市局库管理员)使用。-- 创建用户itcast,只能够在当前主机localhost访问,密码666666。
create user 'itcast'@'localhost' identified by '666666';-- 创建用户enhuan,可以在任意主机访问该数据库,密码666666。
create user 'enhuan'@'%' identified by '666666';-- 修改用户enhuan的访问密码为888。
alter user 'enhuan'@'%' identified with mysql_native_password by '888';-- 删除itcast@localhost用户。
drop user 'itcast'@'localhost';-- DCL-权限控制
-- 1.查询权限
--   show grants for '用户名'@'主机名';
-- 2.授予权限
--   grant 权限列表 on数据库名.表名 to '用户名'@'主机名';
-- 3.撤销权限
--   revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';-- 注意:
--   多个权限之间,使用逗号分隔。
--   授权时,数据库名和表名可以使用*通配,代表所有。-- 查询权限
show grants for 'enhuan'@'%';-- 授予权限
grant all on itenhuan.* to 'enhuan'@'%';-- 撤销权限
revoke all on itenhuan.* from 'enhuan'@'%';


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android常见界面控件(三)
  • 云计算第二阶段---DBA Day05-DAY07
  • 解决方案:在jupyter notebook环境下安装不了numpy
  • 最近(2024.08.14-2024.08.25 )面试感悟
  • 软件测试之黑盒测试详解
  • Github 2024-08-22 Go开源项目日报 Top10
  • 全排列-深度优先搜索
  • Java Web —— 第七天(Mybatis案例 部门管理)
  • 领域驱动模型设计与微服务架构落地(二)
  • LeetCode面试题Day17|LC20 有效的括号、LC150 逆波兰表达式
  • 绘剪批量软件——绘剪批量软件
  • 【MySQL】HEAP 表(MEMORY 表)
  • 8.23CF训练题解
  • 007、架构_配置文件_GTM(gtm.ini)
  • 深度理解指针(3)
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【RocksDB】TransactionDB源码分析
  • 78. Subsets
  • Bootstrap JS插件Alert源码分析
  • CSS 提示工具(Tooltip)
  • golang中接口赋值与方法集
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JS专题之继承
  • leetcode-27. Remove Element
  • PAT A1050
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Sublime text 3 3103 注册码
  • windows下mongoDB的环境配置
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 基于Android乐音识别(2)
  • 警报:线上事故之CountDownLatch的威力
  • 马上搞懂 GeoJSON
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 如何在GitHub上创建个人博客
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 怎么把视频里的音乐提取出来
  • 栈实现走出迷宫(C++)
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​低代码平台的核心价值与优势
  • ​渐进式Web应用PWA的未来
  • ​浅谈 Linux 中的 core dump 分析方法
  • #14vue3生成表单并跳转到外部地址的方式
  • (19)夹钳(用于送货)
  • (20050108)又读《平凡的世界》
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (附源码)计算机毕业设计SSM智慧停车系统