MySQL用户权限管理详解

MySQL 用户管理权限非常详细且灵活,允许管理员精确控制不同用户对数据库的访问和操作能力。权限系统基于权限层级和具体操作类型来设计。以下是一些核心概念和权限详解:

权限层级

  1. 全局级权限:影响整个MySQL服务器,例如CREATE USERPROCESSSHUTDOWN等。
  2. 数据库级权限:针对特定数据库的权限,如对mydb数据库的SELECTINSERTUPDATE等。
  3. 表级权限:控制用户对特定数据库内表格的操作,例如mydb.mytableSELECTDELETE等。
  4. 列级权限:在某些情况下,还可以控制对表中特定列的操作,但需要通过复杂的SQL语句间接实现。
  5. 存储过程和函数权限:控制对存储过程和函数的执行权限。
  6. 代理用户权限:允许一个用户以另一个用户的权限执行操作。

常见权限列表

  • SELECT: 读取数据。
  • INSERT: 插入新数据。
  • UPDATE: 更新现有数据。
  • DELETE: 删除数据。
  • CREATE: 创建新的数据库或表。
  • ALTER: 修改数据库或表结构。
  • DROP: 删除数据库或表。
  • INDEX: 创建或删除索引。
  • GRANT OPTION: 允许用户将自己拥有的某些权限授予其他用户。
  • REFERENCES: 对外键的引用权限(在MySQL中通常隐含)。
  • CREATE TEMPORARY TABLES: 创建临时表。
  • CREATE VIEW: 创建视图。
  • SHOW VIEW: 查看视图的定义。
  • EXECUTE: 执行存储过程。
  • EVENT: 创建、修改或删除事件。
  • TRIGGER: 使用触发器。
  • CREATE ROUTINE: 创建存储过程或函数。
  • ALTER ROUTINE: 修改存储过程或函数。
  • LOCK TABLES: 锁定表进行写操作,防止并发问题。
  • REPLICATION CLIENT: 访问复制相关的状态信息。
  • REPLICATION SLAVE: 用于复制从服务器连接主服务器。
  • SHOW DATABASES: 列出所有数据库的权限。
  • SUPER: 允许执行一系列管理操作,如杀死进程、更改全局变量等。
  • PROCESS: 查看进程状态。
  • SHUTDOWN: 关闭MySQL服务器。

创建用户

命令格式为:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

解释:此命令用于创建一个新的MySQL用户账户。其中,

  • 'username' 是您想要给新用户设置的用户名。
  • 'host' 指定该用户可以从哪个主机或IP地址登录。可以是具体的IP(如'192.168.1.100')、域名(如'localhost')或使用%作为通配符,表示用户可以从任意地点登录。
  • 'password' 是用户登录时需要输入的密码。

示例:创建一个名为john_doe的用户,该用户可以从本地登录,并设置密码为SecureP@ss

CREATE USER 'john_doe'@'localhost' IDENTIFIED BY 'SecureP@ss';

授予权限

命令格式为:GRANT privileges ON database.table TO 'username'@'host';

解释:此命令用于向用户授予访问特定数据库或表的权限。privileges可以是一个或多个权限的组合,用逗号分隔。

示例:给用户john_doe授予对mydb数据库中所有表的查询和插入权限。

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

撤销权限

命令格式为:REVOKE privileges ON database.table FROM 'username'@'host';

解释:此命令用于撤销之前赋予用户的特定权限。

示例:撤销john_doemydb数据库中所有表的插入权限。

REVOKE INSERT ON mydb.* FROM 'john_doe'@'localhost';

 刷新权限

命令格式为:FLUSH PRIVILEGES;

解释:在修改了用户权限后,需要执行这个命令来立即应用这些权限变更,而不是等待MySQL服务器下次重启时自动应用。

示例:直接使用,无须指定特定用户或数据库。

FLUSH PRIVILEGES;

删除用户

命令格式为:DROP USER 'username'@'host';

解释:此命令用于彻底删除一个用户账户及其所有权限。

示例:删除用户john_doe

DROP USER 'john_doe'@'localhost';

通过以上命令和示例,您可以完成MySQL中用户的创建、权限管理以及用户账号的删除等基本管理工作,确保数据库系统的安全与高效运行。

查看用户权限

要查看MySQL中某个用户的具体权限,可以使用SHOW GRANTS命令。该命令会展示指定用户的所有权限分配情况。其基本语法如下:

SHOW GRANTS FOR 'username'@'host';
  • 'username' 替换为你要查询的用户名。
  • 'host' 替换为该用户被授予权限时指定的主机名或IP地址。

示例:假设我们要查看用户john_doe从本地主机(localhost)登录所具有的权限,可以执行以下命令:

SHOW GRANTS FOR 'john_doe'@'localhost';

执行该命令后,MySQL会返回一系列表示该用户权限的语句,例如:

Grants for john_doe@localhost
GRANT SELECT, INSERT ON mydb.* TO 'john_doe'@'localhost' IDENTIFIED BY PASSWORD '...';

这表明用户john_doemydb数据库有查询和插入的权限。通过这些输出,你可以详细了解用户的权限配置。

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

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

相关文章

数据库的增删改查操作语句及一些常用的进阶语句

在关系数据库管理系统(RDBMS)中,增删改查(CRUD)操作是最基本的数据库操作。以下是这些操作的详细介绍以及其他常用的数据库操作语句。 增(Create/Insert) 1. 创建数据库 创建一个新的数据库。…

lua手动添加Opencv Mat对象

错误写法 在lua的userdata中分配内存 使用c的placement new 调用 Mat 类的构造函数,把对象分配在lua的userdata空间中 Mat的生命周期由lua虚拟机管理,跟随lua变量生命周期 void createMat(const std::string& filename,Mat *result) {Mat img c…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 生成哈夫曼树(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 生成哈夫曼树(100分) 🌍 评测功能需要订阅专栏后私信联系清…

如何应对缺失值带来的分布变化?探索填充缺失值的最佳插补算法

本文将探讨了缺失值插补的不同方法,并比较了它们在复原数据真实分布方面的效果,处理插补是一个不确定性的问题,尤其是在样本量较小或数据复杂性高时的挑战,应选择能够适应数据分布变化并准确插补缺失值的方法。 我们假设存在一个…

506.相对名次

给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次…

【Java】已解决:Java.lang.OutOfMemoryError: GC overhead limit exceeded

文章目录 问题背景可能出错的原因错误代码示例正确代码示例注意事项 问题背景 java.lang.OutOfMemoryError: GC overhead limit exceeded 是Java虚拟机(JVM)在运行时遇到的一种内存溢出错误。这种错误通常发生在应用程序的堆内存(Heap Memor…

c++ namespace详解

在C中,命名空间(namespace)是一种用于组织代码的机制,能够避免命名冲突。通过命名空间,可以将相关的类、函数、变量等组织在一起,使代码更具结构性和可读性。 使用命名空间 定义命名空间 你可以使用关键字…

香港Web3时代:比特币可以成为「收益性资产」吗?

原文标题:《CAN BITCOIN BE A PRODUCTIVE ASSET?》撰文:Pascal Hgli编译:Chris,Techub News本文来源香港Web3媒体 Techub News 比特币正在经历一场大的变化,人们对其性质有不同的看法。有些人将其视为日常交易的货币…

数据结构试题 16-17

先这样吧,,专业课不是统考,我发现每年的卷子风格都不太一样,侧重点也不一样。以及21的和16的发生了很大的改变。等明年1月再看看吧 那就先over啦 数据结构撒花!!!!!&am…

基于single flight来解决缓存击穿

目录 1. 缓存击穿2. 常见解决方案3.single flight方式3.1 模拟业务场景3.2 使用single flight的方式 缓存雪崩、缓存击穿、缓存穿透不单单是缓存领域的经典场景,更是面试当牛马时必备(背)八股文。 我们来讨论下缓存击穿场景下的解决方案。 …

【AI开发】RAG基础

RAG的基本流程: 用一个loader把knowledge base里的知识做成一个个的document,然后把document切分成snippets,把snippets通过embedding(比如openai的embedding模型或者huggingface的)向量化,存储到vectordb…

git 配置私人令牌

这里写自定义目录标题 获取私人令牌配置个人令牌 获取私人令牌 在个人设置里点击私人令牌选型,之后生成令牌即可。注意:令牌只会出现一次,务必保存好。 配置个人令牌 个人令牌:3c15c866fa61066212a83c66fd8133ba # 进入项目文…

.NET C# 实现国密算法加解密

.NET C# 实现国密算法加解密 概述1. SM12. SM23. SM34. SM45. SM76. SM97. ZUC C#代码实现1 SM22 SM33 SM4 概述 国密算法(SM算法)是中国国家密码管理局制定的一系列密码算法标准。这些算法被广泛应用于各种信息安全领域,包括通信、电子商务…

护眼灯对眼睛有伤害吗?千万要小心的行业四大弊端内幕

护眼灯,作为现代家居与办公环境中不可或缺的照明伴侣,因其普及性广受青睐。然而,随着大众对视觉健康意识的逐渐增强,一个疑问悄然滋生:护眼灯对眼睛有伤害吗?这一问题不仅触及到了人们对视觉健康的深层担忧…

MLOps模型部署的三种策略:批处理、实时、边缘计算

机器学习运维(MLOps)是一组用于自动化和简化机器学习(ML)工作流程和部署的实践。所选择的部署策略可以显著影响系统的性能和效用。所以需要根据用例和需求,采用不同的部署策略。在这篇文章中,我们将探讨三种…

Java家政预约系统源码 家政上门APP源码 家电安装、维修、清洗、美容系统源码、家政系统各端功能细分

Java家政预约系统源码 家政上门APP源码 家电安装、维修、清洗、美容系统源码、家政系统各端功能细分 家政服务系统是一种提供家政服务的系统,它可以为客户提供上门家庭清洁、钟点工、保姆、月嫂、育婴师、护理员等家政服务。节省时间和成本,提高效率&…

网络层只懂路由?这9个知识点被严重低估了

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友。 网络层想必你已经耳熟能详,它的作用自然是不容小觑。 它负责将数据从源头准确地投递到目的地&am…

9.2JavaEE——JDBCTemplate的常用方法(一)excute()方法

execute()方法用于执行SQL语句,其语法格式如下: jdTemplate.execute("SQL 语句");下面以创建数据表的SQL语句为例,来演示excute()方法的使用,具体步骤如下。 1、创建数据库 在MySQL中,创建一个名为spring的…

QT pro包含库文件目录符号含义

直接调用DLL需要三个文件,头文件(.h)、导入库文件(.lib)、动态链接库(.dll), 注意:在qtCreaor中生成的动态库库文件文件为.a结尾,vs生成的动态链接库是.lib结尾 1、首先我们把 .h与.lib/.a 文件复制到程序当前目录下&#xff0c…

软设之白盒测试

白盒测试分为语句覆盖,判定覆盖,条件覆盖,判断/条件覆盖,条件组合覆盖,路径覆盖 语句覆盖 定义:被测试程序中的每条语句至少执行一次 特点:对执行逻辑覆盖很低,一般认为是很弱的逻辑组合。 判定覆盖: …