首页 > 数据库 >MySQL学习笔记之用户管理与权限控制(DCL)

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

时间:2024-08-24 15:51:15浏览次数:12  
标签:DCL -- 数据库 用户 主机名 MySQL 权限 enhuan

文章目录

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'@'%';


标签:DCL,--,数据库,用户,主机名,MySQL,权限,enhuan
From: https://blog.csdn.net/2301_80093566/article/details/141500728

相关文章

  • node.js: mysql sequelize es6 ORM (updated)
     /***description:*product:WebStorm*projectvuetstest*File:dbconfig.js*ds:$*IDE:webstorm2023.1*OS:windows10*database:mysql8+sqlserver2019postgreSQL16*dev:node20+vue.js3.0+*@authorhp*@projectvuetstest*......
  • linux安装mysql5.7
    一安装前准备1、检查是否已经安装过mysql,执行命令rpm-qa|grepmysql如果已存在,则执行删除命令后边为Mysql目录rpm-e--nodepsmysql-xxxx 2、检查mysql用户组和用户是否存在,如果没有,则创建cat/etc/group|grepmysqlcat/etc/passwd|grepmysqlgroupaddmysql......
  • MySQL 中 Varchar(50) 和 varchar(500) 有什么区别?
    问题我们在设计表结构的时候,设计规范里面有一条如下规则:对于可变长度的字段,在满足条件的前提下,尽可能使用较短的变长字段长度。为什么这么规定,主要基于两个方面基于存储空间的考虑基于性能的考虑网上说Varchar(50)和varchar(500)存储空间上是一样的,真的是这样吗?基于性能......
  • MySQL执行计划详解
    Explain语法EXPLAINSELECT……变体:1.EXPLAINEXTENDEDSELECT……将执行计划“反编译”成SELECT语句,运行SHOWWARNINGS可得到被MySQL优化器优化后的查询语句2.EXPLAINPARTITIONSSELECT……用于分区表的EXPLAIN执行计划包含的信息 id包含一组数字,表示查询......
  • 理解MySQL——索引与优化
    写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页......
  • MYSQL limit用法详解
    当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。准备工作为了对下面列举的一些优化进行测试,下面针对已有的一张表......
  • MySQL 四种隔离级别
    事务的四个特征(ACID)事务具有四个特征:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性简称为ACID特性。1、原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2、一致性。事务执行的结果必须是使数据......
  • MySQL的Grant命令详解
    MySQL赋予用户权限命令的简单格式可概括为:grant权限on数据库对象to用户 一、grant普通数据用户,查询、插入、更新、删除数据库中所有表数据的权利。grantselectontestdb.*tocommon_user@'%'grantinsertontestdb.*tocommon_user@'%'grantupdateontestd......
  • 软件设计之MySQL(6)
    软件设计之MySQL(6)此篇应在JavaSE之后进行学习:路线图推荐:【Java学习路线-极速版】【Java架构师技术图谱】Navicat可以在软件管家下载``使用navicat连接mysql数据库创建数据库、表、转储sql文件,导入sql数据MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花......
  • PHP与MySQL数据库是如何结合使用的?
    PHP与MySQL数据库的结合使用主要通过PHP脚本与MySQL数据库进行交互,实现数据的存储、查询、更新和删除等操作。以下是结合使用的详细步骤和方法:1:准备工作:确保PHP和MySQL环境可用。创建MySQL数据库和表,以存储数据。2:连接数据库:使用mysqli连接MySQL数据库,代码示例为:$mys......