如何给 MySQL 表和列授予权限?(官方版)
目录
授予表级别权限
授予列级别权限
如何给MySQL表和列授予权限是MySQL数据操作中非常重要的步骤,也是企业级使用MySQL数据库的起步点,以下分别参照官方教程整理的MySQL数据库的权限操作。

以下的语句可以直接使用MySQL的命令行进行操作(如何连接命令行不在此处说明),也可以使用SQL开发工具如MySQL Workbench或SQLynx等完成。
授予表级别权限
您可以通过执行以下操作在 MySQL 中创建具有表级权限的用户:
1. 使用 Create_user_priv 和 Grant_priv 以用户身份连接到 MySQL。通过运行以下查询确定哪些用户具有这些权限。您的用户已经需要 MySQL.user 上的 SELECT 权限才能运行查询。
SELECT User, Host, Super_priv, Create_user_priv, Grant_priv from mysql.user WHERE Create_user_priv = 'Y' AND Grant_Priv = 'Y';
2. 运行以下查询来为受限用户生成 GRANT 语句。将“mydatabase”、“myuser”和“myhost”替换为您的数据库的特定信息。
请注意,myuser 和 mypassword 周围的引号是两个单引号,而不是双引号。myhost 和 TABLE_NAME 周围的字符是反引号(该键位于键盘上的 Esc 键下方)。
SELECT CONCAT('GRANT SELECT, SHOW VIEW ON mydatabase.`', TABLE_NAME, '` to ''myuser''@`myhost`;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'mydatabase'; 例如,如果您想使用 chartio_connect 客户端将用户“chartio_read_only”连接到您的“报告”数据库,您可以运行以下命令:
SELECT CONCAT('GRANT SELECT, SHOW VIEW ON Reports.`', TABLE_NAME, '` to ''chartio_read_only''@`localhost`;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'Reports'; 如果您想使用来自 Chartio 服务器的直接连接将用户“chartio_direct_connect”连接到您的“Analytics”数据库,您可以运行以下命令:
SELECT CONCAT('GRANT SELECT, SHOW VIEW ON Analytics.`', TABLE_NAME, '` to ''chartio_direct_connect''@`52.6.1.1`;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'Analytics'; 3. 查询结果应类似以下内容:
GRANT SELECT, SHOW VIEW ON mydatabase.`Activity` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Marketing` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Operations` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Payments` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Plans` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Services` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Subscriptions` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Users` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Visitors` to 'myuser'@`myhost`; 4. 仅选择您想要授予访问权限的表的语句并运行这些查询。例如,如果我们只想授予对用户和访问者表的访问权限,我们将运行:
GRANT SELECT, SHOW VIEW ON mydatabase.`Users` to 'myuser'@`myhost`;
GRANT SELECT, SHOW VIEW ON mydatabase.`Visitors` to 'myuser'@`myhost`; 5. 为用户提供一个安全的密码。
SET PASSWORD FOR 'chartio_read_only'@`localhost` = PASSWORD('top$secret'); 或者
SET PASSWORD FOR 'chartio_direct_connect'@`52.6.1.1` = PASSWORD('top$secret'); 现在您可以安全地使用此用户访问您的数据库,并确保它只对指定的表具有权限。
授予列级别权限
授予特定表的列级权限的过程与授予表级权限的过程非常相似。
1. 使用以下查询生成列级权限的 GRANT 语句:
SELECTCONCAT('GRANT SELECT (`', COLUMN_NAME, '`), SHOW VIEW ON mydatabase.`', TABLE_NAME, '` to ''myuser''@`myhost`;')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'mydatabase' AND TABLE_NAME = 'mytable'; 例如,如果您想使用 chartio_connect 客户端将用户“chartio_read_only”连接到“Reports”数据库的“Users”表中的特定列,则可以运行以下命令:
SELECTCONCAT('GRANT SELECT (`', COLUMN_NAME, '`), SHOW VIEW ON Reports.`', TABLE_NAME, '` to ''chartio_read_only''@`localhost`;')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'Reports' AND TABLE_NAME = 'Users'; 2. 查询结果应类似于以下内容:
GRANT SELECT (`User_ID`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
GRANT SELECT (`Campaign_ID`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
GRANT SELECT (`Created_Date`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
GRANT SELECT (`Company`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
GRANT SELECT (`City`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
GRANT SELECT (`State`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
GRANT SELECT (`Zip`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
GRANT SELECT (`Phone_Number`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
GRANT SELECT (`Credit_Card`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`; 3. 仅选择您想要授予访问权限的列的语句并运行这些查询。例如,如果我们只想授予对“User_ID”和“Company”列的访问权限,我们将运行:
GRANT SELECT (`User_ID`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`;
GRANT SELECT (`Company`), SHOW VIEW ON Reports.`Users` to 'chartio_read_only'@`localhost`; 4. 为用户提供一个安全的密码。
SET PASSWORD FOR 'chartio_read_only'@`localhost` = PASSWORD('top$secret');
欲了解更多信息,请咨询 MySQL 文档。
相关文章:
如何给 MySQL 表和列授予权限?(官方版)
目录 授予表级别权限 授予列级别权限 如何给MySQL表和列授予权限是MySQL数据操作中非常重要的步骤,也是企业级使用MySQL数据库的起步点,以下分别参照官方教程整理的MySQL数据库的权限操作。 以下的语句可以直接使用MySQL的命令行进行操作(如何…...
攻防世界testre做法(考点:base58)
在做这道题目之前,我们先来简单了解一下base64加密和base58加密,先来说一些预备知识,bit为1个位,即一个0或1,八个位组成一个字节,即八个二进制数。 base64编码原理:1,在使用base64加…...
计算机视觉与模式识别实验1-1 图像的直方图平衡
文章目录 🧡🧡实验流程🧡🧡1.读入图像‘rice.png’,在一个窗口中显示灰度级n64,128和256的图像直方图。2.调解图像灰度范围,观察变换后的图像及其直方图的变化。3.分别对图像‘pout.tif’和‘ti…...
【C++课程学习】:C++入门(函数重载)
🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🌈函数重载: 🍉1.参数个数不同: 🍉2.参数…...
skywalking介绍及搭建
链路追踪框架比对: skywalking安装部署: 下载地址:Downloads | Apache SkyWalking 配置微服务与skywalking整合: copy agent/optional-plugins/apm-spring-cloud-getway-xx.jar到plugins,然后重启skywalking 监控界面…...
分析示例 | Simufact焊接工艺仿真变形精确预测汽车结构
导语 焊接是汽车制造过程中一个关键环节,白车身、发动机、底盘和变速箱等都离不开焊接工艺的应用,主要涉及气保焊、电阻点焊、激光焊、电子束焊等多种焊接工艺。由于汽车车型众多、成形结构复杂、汽车制造质量、效率、成本等方面的综合要求。如何高效、…...
模式识别选择题
影响K-均值聚类算法效果的主要因素之一是什么? A. 初始聚类中心的选取 B. 样本输入顺序 C. 模式相似性测度 D. 分类准则 答案:A支持向量机(SVM)在处理非线性问题时,通常使用什么方法? A. 引入核函数 B. 增加…...
【Java基础】线程方法
start():启动线程,使线程进入就绪状态。 run():线程执行的代码逻辑,需要重写该方法。 停止线程 void interrupt() 中断线程,让它重新去争抢cpu 如果目标线程长时间等待,则应该使用interrupt方法来中断等待…...
C++之动态数组
C给我们提供了一个叫Vector的类,这个Vector在std命名空间中。这个Vector有点像一个集合,一个不强制其实际元素具有唯一性的集合,和数组一样,但是和C普通的数组又不太一样,和标准的数组不同当你创建Vector时,…...
使用 image-combiner 开源项目实现对海报图片的生成
1:gitee 项目地址 image-combiner: ImageCombiner是一个专门用于Java服务端图片合成的工具,没有很复杂的功能,简单实用,从实际业务场景出发,提供简单的接口,几行代码即可实现图片拼合(当然用于…...
【缓存】框架层常见问题和对策
缓存是为了加快读写速度,再了解redis这类框架层的缓存应用之前,我们不妨先思考下操作系统层面的缓存解决方案,这样有助于我们更深的理解缓存,哪些是系统层面的,哪些是服务层面。 以下是一些常见的缓存问题及其解决方案…...
【FAS】《CN103106397B》
原文 CN103106397B-基于亮瞳效应的人脸活体检测方法-授权-2013.01.19 华南理工大学 方法 / 点评 核心方法用的是传统的形态学和模板匹配,亮点是双红外发射器做差分 差分:所述FPGA芯片控制两组红外光源(一近一远)交替亮灭&…...
3D按F3为什么显示不出模型?---模大狮模型网
对于3D建模软件的用户来说,按下F3键通常是用来显示或隐藏模型的功能之一。然而,有时当按下F3键时,却无法正确显示模型,这可能会让用户感到困惑。模大狮将探讨这种情况发生的可能原因以及解决方法,帮助设计师们更好地理…...
C++设计模式——Adapter适配器模式
一,适配器模式简介 适配器模式是一种结构型设计模式,用于将已有接口转换为调用者所期望的另一种接口。 适配器模式让特定的API接口可以适配多种场景。例如,现有一个名为"Reader()"的API接口只能解析txt格式的文件,给这…...
Python文本处理利器:jieba库全解析
文章目录 Python文本处理利器:jieba库全解析第一部分:背景和功能介绍第二部分:库的概述第三部分:安装方法第四部分:常用库函数介绍1. 精确模式分词2. 全模式分词3. 搜索引擎模式分词4. 添加自定义词典5. 关键词提取 第…...
【C/C++】C语言如何实现类似C++的智能指针?
在C中,智能指针是为了自动化资源管理而引入的工具。比如std::unique_ptr和std::shared_ptr等,它们管理着所持有对象的生命周期,可以在智能指针被销毁时自动释放其所持有的资源。在C语言中,虽然没有直接的智能指针概念,…...
九大微服务监控工具详解
Prometheus Prometheus 是一个开源的系统监控、和报警工具包,Prometheus 被设计用来监控“微服务架构”。 主要解决: 监控和告警:Prometheus 可以对系统、和应用程序进行实时监控,并在出现问题时发送告警;数据收集和…...
java aliyun oss上传和下载工具类
java aliyun oss上传和下载工具类 依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.8.0</version></dependency>工具类 import com.alibaba.fastjson.JSON; import c…...
P7 品牌管理
逆向生成页面 新增菜单—商品系统的品牌管理 —product/brand 在代码生成器得到的文件中, main-resources-src-views-modules-product brand.vue、brand-add-or-update.vue放到category.vue同级vue文件有新增、删除按钮,但页面未显示,是因…...
C语言详解(动态内存管理)1
Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
yaml读取写入常见错误 (‘cannot represent an object‘, 117)
错误一:yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因,后面把yaml.safe_dump直接替换成yaml.dump,确实能保存,但出现乱码: 放弃yaml.dump,又切…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx
“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网(IIoT)场景中,结合 DDS(Data Distribution Service) 和 Rx(Reactive Extensions) 技术,实现 …...
el-amap-bezier-curve运用及线弧度设置
文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...
【多线程初阶】单例模式 指令重排序问题
文章目录 1.单例模式1)饿汉模式2)懒汉模式①.单线程版本②.多线程版本 2.分析单例模式里的线程安全问题1)饿汉模式2)懒汉模式懒汉模式是如何出现线程安全问题的 3.解决问题进一步优化加锁导致的执行效率优化预防内存可见性问题 4.解决指令重排序问题 1.单例模式 单例模式确保某…...
