MySQL DCL 数据控制

文章目录

  • 1.新建用户
  • 2.删除用户
  • 3.用户授权
  • 4.撤销用户权限
  • 5.查看用户权限
  • 6.修改用户密码
  • 7.权限类型
  • 参考文献

1.新建用户

连接到 MySQL 服务器后,管理员或特权用户可以使用 CREATE USER 语句创建新用户。

CREATE USER 'username'@'host' IDENTIFIED BY 'password';-- 示例
CREATE USER lvlv@"%";
CREATE USER lvlv@"%" IDENTIFIED BY 'lvlv';
CREATE USER lvlv@localhost IDENTIFIED BY 'lvlv';
CREATE USER lvlv@192.168.1.1 IDENTIFIED BY 'lvlv';

username 是将要创建的用户名。

host 指定该用户在哪个主机上可以登录,如果是本地用户可用 localhost,如果想让该用户可以从任意远程主机登录,可以使用通配符 %。

password 是用户的登录密码,密码可以为空,如果为空则该用户可以不需要密码登录 MySQL 服务器。

创建的用户信息存放于 mysql.user 数据表中。

2.删除用户

连接到 MySQL 服务器后,管理员或特权用户可以使用 DROP USER 语句删除指定的用户。

DROP USER 'username'@'host';-- 示例
DROP USER lvlv@localhost;

删除用户时,主机名要与创建用户时使用的主机名一致。

3.用户授权

MySQL 要为用户授予数据库操作权限,可以使用 GRANT 语句进行用户授权。

GRANT 语句允许管理员或特权用户授予其他用户对数据库、表、列等对象的特定权限。授权后,被授权用户可以执行授予的权限操作。

GRANT privilege_type ON dbname.tablename TO 'username'@'host';-- 示例
GRANT SELECT, INSERT ON *.* TO lvlv@'%';
GRANT ALL ON *.* TO lvlv@'%';

在授权用户权限之后,要使新权限生效,需要使用刷新权限。

FLUSH PRIVILEGES;

privilege_type 是一个用逗号分隔的赋予用户的权限列表,如 SELECT , INSERT , UPDATE 等(详细列表见该文末)。如果要授予所有权限则使用 ALL。

dbname 为数据库名,tablename 为表名,如果要授予用户对所有数据库和表的权限可用*.*表示所有库表。

host 参数用于指定用户连接到 MySQL 服务器时所使用的主机或 IP 地址。它定义了用户的连接来源,可以使用通配符 % 表示任意来源主机。

使用 GRANT 为用户授权时,如果指定的用户不存在,则会新建该用户并授权。设置允许用户远程访问 MySQL 服务器时,一般使用该命令,并指定密码。

GRANT SELECT, INSERT ON *.* TO lvlv@'%' IDENTIFIED BY '123456';

4.撤销用户权限

在 MySQL 中,要撤销用户的权限,可以使用 REVOKE 语句进行权限撤销。REVOKE 语句允许管理员或特权用户从其他用户中撤销已经授予的权限。

REVOKE privilege_type ON dbname.tablename FROM 'username'@'host';-- 示例
REVOKE SELECT ON *.* FROM lvlv@'%';
REVOKE ALL ON *.* FROM 'lvlv'@'%';

假如给用户'pig'@'%'授权时使用下面(或类似)这种方式。

GRANT SELECT ON test.user TO 'pig'@'%

则在使用下面的命令撤销用户对所有数据库表权限时,并不能撤销该用户对 test 数据库中 user 表的 SELECT 权限。

REVOKE SELECT ON *.* FROM  'pig'@'%';

相反,如果授权时指定的是所有数据库表。

GRANT SELECT ON *.* TO 'pig'@'%;

撤销用户某个库表的权限时,使用下面命令也不能撤销该用户对 test 数据库中 user 表的 SELECT 权限。

REVOKE SELECT ON test.user FROM 'pig'@'%';

具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看。

5.查看用户权限

在 MySQL 中,有多种方法可以查看用户的权限。

  • 使用 SHOW GRANTS 语句。
SHOW GRANTS FOR 'username'@'host';-- 示例
SHOW GRANTS FOR lvlv@localhost;
SHOW GRANTS FOR lvlv;

不指定主机名称,默认为任意主机"%"。

  • 查询 INFORMATION_SCHEMA.SCHEMA_PRIVILEGES 表。
SELECT * FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES;
  • 查询 mysql.user 表。

可以从 mysql.user 表中查看所有用户信息,包括用户的权限。

SELECT * FROM mysql.user WHERE user='username';

6.修改用户密码

  • SET PASSWORD

使用 SET PASSWORD 语句可以修改指定用户的密码。

SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');# 示例
SET PASSWORD FOR lvlv@localhost=PASSWORD('123456');

如果是当前登录用户则不需要指定用户名。

SET PASSWORD = PASSWORD("newpassword");
  • ALTER USER

MySQL 5.7 版本及以上支持 ALTER USER 语句修改用户密码。

ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
  • 更新 mysql.user 表中的密码字段。

注意,使用这种方法需要谨慎操作,确保您具有足够的特权,并且了解 MySQL 用户表的结构。

UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE user = 'username' AND host = 'host';

修改密码后,一定要执行 FLUSH PRIVILEGES 命令刷新权限,以使新密码生效。

  • 使用服务端工具 mysqladmin。

另外,使用服务端工具 mysqladmin 也可以修改用户密码。

mysqladmin -u 'username' -p 'oldpassword' password 'newpassword'-- 示例
mysqladmin -u 'lvlv' -p '123456' password "123321"

7.权限类型

MySQL 权限可以分为三种类型:数据库、数据表和数据列的权限。从 mysql.user 表中可查看用户权限信息。

SELECT * from mysql.user WHERE user='username' \G

权限有:

Select_priv: 查看数据表;
Insert_priv: 插入数据表;
Update_priv: 更新数据表;
Delete_priv: 删除数据表记录;
Create_priv: 创建数据库和数据表;
Drop_priv: 删除数据库和数据表;
Reload_priv: 允许使用FLUSH; 
Shutdown_priv: 允许使用mysqladmin shutdown;
Process_priv: 允许使用SHOW FULL PROCESSLIST查看其他用户的进程;
File_priv: 允许使用SELECT… INTO OUTFILE and LOAD DATA INFILE;
Grant_priv: 允许使用grant为用户授权;
References_priv: 未来功能的占位符;现在没有作用;
Index_priv: 确定用户是否可以创建和删除表索引;
Alter_priv: 确定用户是否可以重命名和修改表结构;
Show_db_priv: 确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库。可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因;
Super_priv: 确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,Allows use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET GLOBAL SQL statements. Allows mysqladmin debug command. Allows one extra connection to be made if maximum connections are reached;
Create_tmp_table_priv: 创建临时表;
Lock_tables_priv: 可以使用LOCK TABLES命令阻止对表的访问修改;
Execute_priv: 执行存储过程。此权限只在MySQL5.0及更高版本中有意义。
Repl_slave_priv: 读取用于维护复制数据库环境的二进制日志文件。此用户位于主系统中,有利于主机和客户机之间的通信;
Repl_client_priv: 确定用户是否可以确定复制从服务器和主服务器的位置;
Create_view_priv: 创建视图。此权限只在MySQL5.0及更高版本中有意义;
Show_view_priv: 查看视图或了解视图如何执行。此权限只在MySQL5.0及更高版本中有意义。关于视图的更多信息;
Create_routine_priv: 更改或放弃存储过程和函数。此权限是在MySQL5.0中引入;
Alter_routine_priv: 修改或删除存储函数及函数。此权限是在MySQL5.0中引入的;
Create_user_priv: 执行CREATE USER命令,这个命令用于创建新的MySQL账户;
Event_priv: 确定用户能否创建、修改和删除事件。这个权限是MySQL 5.1.6新增;
Trigger_priv: 创建和删除触发器,这个权限是MySQL 5.1.6新增的;MySQL 特别权限: 
ALL: 允许做任何事(和root一样); 
USAGE: 只允许登录,其它什么也不允许做。

参考文献

Account Management Statements - MySQL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬虫爬取淘宝商品比价||淘宝商品详情API接口

最近在学习北京理工大学的爬虫课程,其中一个实例是讲如何爬取淘宝商品信息,现整理如下: 功能描述:获取淘宝搜索页面的信息,提取其中的商品名称和价格 探讨:淘宝的搜索接口 翻页的处理 技术路线:requests…

【Vim Masterclass 笔记13】第 7 章:Vim 核心操作之——文本对象与宏操作 + S07L28:Vim 文本对象

文章目录 Section 7:Text Objects and MacrosS07L28 Text Objects1 文本对象的含义2 操作文本对象的基本语法3 操作光标所在的整个单词4 删除光标所在的整个句子5 操作光标所在的整个段落6 删除光标所在的中括号内的文本7 删除光标所在的小括号内的文本8 操作尖括号…

强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Transformer-LSTMNSGAII多目标优化算法,工艺参数优化、工程设计优化!(Matlab完整源码和数据) Transformer-LSTM模型的架构:输入层:多个变量作…

SpringCloud系列教程:微服务的未来(十一)服务注册、服务发现、OpenFeign快速入门

本篇博客将通过实例演示如何在 Spring Cloud 中使用 Nacos 实现服务注册与发现,并使用 OpenFeign 进行服务间调用。你将学到如何搭建一个完整的微服务通信框架,帮助你快速开发可扩展、高效的分布式系统。 目录 前言 服务注册和发现 服务注册 ​编辑 …

跨境电商使用云手机用来做什么呢?

随着跨境电商的发展,越来越多的卖家开始尝试使用云手机来协助他们的业务,这是因为云手机具有许多优势。那么,具体来说,跨境电商使用云手机可以做哪些事情呢? (一)实现多账号登录和管理 跨境电商…

一体机cell服务器更换内存步骤

一体机cell服务器更换内存步骤: #1、确认grdidisk状态 cellcli -e list griddisk attribute name,asmmodestatus,asmdeactivationoutcome #2、offline griddisk cellcli -e alter griddisk all inactive #3、确认全部offline后进行关机操作 shutdown -h now #4、开…

“AI开放式目标检测系统:开启智能识别新时代

嘿,朋友们!今天咱们来聊聊一个超酷炫的技术——AI开放式目标检测系统。这可不是什么高大上、遥不可及的玩意儿,它已经悄悄地走进了我们的生活,改变着我们对世界的认知和互动方式呢。 先来说说,什么是AI开放式目标检测系…

【鱼皮大佬API开放平台项目】Spring Cloud Gateway HTTPS 配置问题解决方案总结

问题背景 项目架构为前后端分离的微服务架构: 前端部署在 8000 端口API 网关部署在 9000 端口后端服务包括: api-backend (9001端口)api-interface (9002端口) 初始状态: 前端已配置 HTTPS(端口 8000)后端服务未配…

【游戏设计原理】68 - 玩家错误

一、错误类型 玩家错误类型 行为错误(performance errors)和运动控制错误(motor control errors)是玩家在游戏中常犯的错误。 运动控制错误 错误发生在玩家协调或掌握输入设备时,可能包括不小心按错键或未能及时把握战…

2.使用Spring BootSpring AI快速构建AI应用程序

Spring AI 是基于 Spring Boot3.x 框架构建,Spring Boot官方提供了非常便捷的工具Spring Initializr帮助开发者快速的搭建Spring Boot应用程序,IDEA也集成了此工具。本文使用的开发工具IDEASpring Boot 3.4Spring AI 1.0.0-SNAPSHOTMaven。 1.创建Spring Boot项目 …

Ubuntu离线docker compose安装DataEase 2.10.4版本笔记

1、先准备一个可以正常上网的相同版本的Ubuntu系统,可以使用虚拟机。Ubuntu系统需要安装好docker compose或docker-compose 2、下载dataease-online-installer-v2.10.4-ce.tar在线安装包,解压并执行install.sh进行安装和启动 3、导出docker镜像 sudo d…

【报错解决】Sql server 2022连接数据库时显示证书链是由不受信任的颁发机构颁发的

SSMS 20在连接Sql server 2022数据库时有如下报错: A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。 原因是尝试使…

LSA更新、撤销

LSA的新旧判断&#xff1a; 1.seq&#xff0c;值越大越优先 2.chksum&#xff0c;值越大越优先 3.age&#xff0c;本地的LSA age和收到的LSA age作比较 如果差值<900s&#xff0c;认为age一致&#xff0c;保留本地的&#xff1a;我本地有一条LSA是100 你给的是400 差值小于…

【FlutterDart】MVVM(Model-View-ViewModel)架构模式例子-dio版本(31 /100)

动图更精彩 dio & http 在Flutter中&#xff0c;dio和http是两个常用的HTTP请求库&#xff0c;它们各有优缺点。以下是对这两个库的详细对比&#xff1a; 功能特性 http&#xff1a; 功能&#xff1a;提供了基本的HTTP请求和响应功能&#xff0c;如GET、POST、PUT、DELE…

递归40题!再见递归

简介&#xff1a;40个问题&#xff0c;有难有易&#xff0c;均使用递归完成&#xff0c;需要C/C的指针、字符串、数组、链表等基础知识作为基础。 1、数字出现的次数 由键盘录入一个正整数&#xff0c;求该整数中每个数字出现的次数。 输入&#xff1a;19931003 输出&#xf…

STM32 FreeRTOS 的任务挂起与恢复以及查看任务状态

目录 任务的挂起与恢复的API函数 任务挂起函数 任务恢复函数 任务恢复函数&#xff08;中断中恢复&#xff09; 函数说明 注意事项 查看任务状态 任务的挂起与恢复的API函数 vTaskSuspend()&#xff1a;挂起任务, 类似暂停&#xff0c;可恢复 vTaskResume()&#xff1a…

openharmony标准系统方案之瑞芯微RK3568移植案例

标准系统方案之瑞芯微RK3568移植案例 ​本文章是基于瑞芯微RK3568芯片的DAYU200开发板&#xff0c;进行标准系统相关功能的移植&#xff0c;主要包括产品配置添加&#xff0c;内核启动、升级&#xff0c;音频ADM化&#xff0c;Camera&#xff0c;TP&#xff0c;LCD&#xff0c…

sunrays-framework 微调

文章目录 1.common-log4j2-starter 动态获取并打印日志存储的根目录的绝对路径以及应用的访问地址1.目录2.log4j2.xml 配置LOG_HOME3.LogHomePrinter.java 配置监听器4.spring.factories 注册监听器5.测试1.common-log4j2-starter-demo 配置2.启动测试 2.common-minio-starter …

ElasticSearch上

安装ElasticSearch Lucene&#xff1a;Java语言的搜索引擎类库&#xff0c;易扩展&#xff1b;高性能&#xff08;基于倒排索引&#xff09;Elasticsearch基于Lucene&#xff0c;支持分布式&#xff0c;可水平扩展&#xff1b;提供Restful接口&#xff0c;可被任何语言调用Ela…

element-ui textarea备注 textarea 多行输入框

发现用这个组件&#xff0c;为了给用户更好的体验&#xff0c;要加下属性 1. 通过设置 autosize 属性可以使得文本域的高度能够根据文本内容自动进行调整&#xff0c;并且 autosize 还可以设定为一个对象&#xff0c;指定最小行数和最大行数。:autosize"{ minRows: 3, ma…