MySQL基础(四)----DCL

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL基础(四)----DCL

一.介绍

在MySQL中,DCL代表数据控制语言(Data Control Language)。数据控制语言是一组用于管理数据库对象访问权限的命令和语句。通过DCL,数据库管理员可以控制用户对数据库对象的访问权限并管理数据的安全性

注意:在使用DCL命令时,请确保具有足够的权限。

二.主要命令

MySQL中的DCL包括以下三个主要关键词命令和一些其他命令:

2.1 GRANT(授权):

GRANT命令用于授权用户或用户组对数据库对象的访问权限。

可以指定用户在某个数据库或表上具有的权限,例如SELECT、INSERT、UPDATE、DELETE等。

授权可以基于不同的级别,可以是全局级别,数据库级别,表级别等。

2.1.1 对数据库授权

语法:GRANT privileges ON database.table TO 'username'@'host';

GRANT 权限列表 ON 数据库名.* TO ‘用户名’@‘访问主机’ IDENTIFIED BY ‘密码’;

其中用户密码可以为空,表示不需要密码即可登录。

权限列表可以是ALL PRIVILEGES,也可以是SELECT、INSERT、UPDATE、DELETE等单个权限或多个权限的组合;

数据库名.*表示对该数据库下的所有表都授予相应的权限;

用户名和密码是该用户的登录名和密码;

访问主机可以是具体的IP地址或者是通配符%。

例如,授权用户A在数据库mydb上具有SELECT和INSERT权限的命令如下:

GRANT SELECT, INSERT ON mydb.* TO 'userA'@'localhost';

这将允许用户名为’userA’的用户在数据库’mydb’的所有表上执行SELECT和INSERT操作。

2.1.2 对数据库下某表的权限:

GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@‘访问主机’ IDENTIFIED BY ‘密码’;

其中,权限列表和访问主机的含义与上面相同,数据库名和表名分别表示该表所在的数据库和表名。

例如,授予用户test对数据库mydb中的表mytable的SELECT和INSERT权限,用户名为test,密码为123456,访问主机为localhost,命令如下:

GRANT SELECT, INSERT ON mydb.mytable TO 'test'@'localhost' IDENTIFIED BY '123456';

2.2 REVOKE(撤销权限)

REVOKE命令用于撤销已经授予用户的访问权限。使用REVOKE命令,可以取消用户对数据库对象的某些或所有权限。

语法:

REVOKE privileges ON database.table FROM ‘username’@‘host’;

例如,撤销用户A在数据库mydb上的SELECT权限的命令如下:

REVOKE SELECT ON mydb.* FROM 'userA'@'localhost';

这将取消用户’userA’在数据库’mydb’上的SELECT权限。

2.3 DENY(拒绝权限)

MySQL中没有直接的DENY命令。一般情况下,如果没有明确授权给用户的权限,那么该用户将被默认拒绝。可以通过REVOKE命令来取消用户的权限。

三.其他命令

拓展

MySQL中登录名和用户名的区别:

  1. 登录名:登录名是用于连接到MySQL服务器的标识符。它通常与操作系统的用户名相同,但也可以是任何其他名称。
    登录名是全局的,意味着它可以用于连接到任何数据库。
  2. 用户名:用户名是用于授权和管理数据库对象的标识符。它与特定数据库相关联,并且只能在该数据库中使用。用户名可以有不同的权限级别,例如SELECT、INSERT、UPDATE和DELETE等。
  3. 两者的目的不同。创建登录名是为了连接到MySQL服务器,而创建用户名是为了授权和管理数据库对象。

3.1 CREATE LOGIN:创建登录名,用于用户登录数据库。

语法:

CREATE LOGIN login_name WITH PASSWORD = 'password'

3.2 ALTER LOGIN:修改登录名的属性,如密码、默认数据库等。

语法:

ALTER LOGIN login_name WITH PASSWORD = 'new_password';

3.3 DROP LOGIN 删除登录名

语法:

DROP LOGIN login_name;

3.4 CREATE USER 创建用户

创建用户,用于授权用户对数据库对象进行操作

语法:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

示例:

CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password123';

表示创建用户名为testuser,密码为password123,本地登录MySQL数据库

本地用户用 localhost,使用通配符%可以使该用户可以从任意远程主机登陆

3.5 ALTER USER 修改用户属性

密码、默认架构等

语法:

ALTER USER user_name WITH PASSWORD = 'new_password';

3.6 DROP USER 删除用户

语法:DROP USER ‘username’@‘host’;

DROP USER user_name;

示例:

DROP USER 'testuser'@'localhost';

3.7 查看用户权限

SHOW GRANTS FOR username;

其中,将 username 替换为要查看权限的用户的用户名。

此命令将显示该用户的所有权限。如果想查看所有用户的权限,可以使用以下命令:

SELECT user, host, Grant_priv, Super_priv FROM mysql.user;

此命令将显示所有用户的用户名、主机名以及他们是否具有 Grant_privSuper_priv 权限。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
⑤ 【MySQL】DCL语句 —— 用户管理、权限控制
⑤ 【MySQL】DCL语句 —— 用户管理、权限控制
71 0
|
SQL 关系型数据库 MySQL
【MySQL入门到精通-黑马程序员】MySQL基础篇-DCL
DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。
54 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL DCL(数据控制语言)详解与实践
MySQL DCL(数据控制语言)详解与实践
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库——SQL(4)-DCL(管理用户、权限控制)
MySQL数据库——SQL(4)-DCL(管理用户、权限控制)
42 1
|
6月前
|
关系型数据库 MySQL 数据库
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
【MySQL-10】DCL-数据控制语言-【管理用户&权限控制】 (语法语句&案例演示&可cv案例代码)
|
SQL 关系型数据库 MySQL
MySQL 数据控制语言(DCL):管理用户权限
MySQL 是一个强大的关系型数据库管理系统,提供了丰富的功能和选项来管理数据库和用户。数据库管理员(DBA)通常使用数据控制语言(Data Control Language,简称 DCL)来管理用户的权限和访问。 本文将详细介绍 MySQL DCL 的基本概念,包括如何创建用户、授权和撤销权限等,同时提供示例代码以帮助您更好地理解。
396 2
|
6月前
|
SQL 关系型数据库 MySQL
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
【MySQL-4】简述SQLの通用语法及4种基本语句介绍(DDL/DML/DQL/DCL)
|
6月前
|
SQL 关系型数据库 MySQL
一文带你了解MySQL的DCL语句
一文带你了解MySQL的DCL语句
398 1
|
6月前
|
SQL 关系型数据库 数据库
【MySQL】:深入理解并掌握DML和DCL
【MySQL】:深入理解并掌握DML和DCL
178 0