MySQL没有实现public关键词。所以,要把一个表(如表table1)的select权限授予所有用户,需要自己遍历所有用户。表Table1的权限,可以通过:

select * from mysql.tables_priv where Table_name = 'table1';

查看。所以,你可以直接在这张表上动手,也可以把所有用户读至游标,遍历所有用户,并用grant语句分别授权:

以下为演示代码:

delimiter $$

create procedure grant_select_table1_to_pubic()

begin

-- 定义变量,用于储存用户名:

declare v_user char(32);

-- 定义结束标志

DECLARE done INT DEFAULT FALSE;

-- 定义游标,这里只演示普通用户:

declare cur_user cursor for

select user from mysql.user

where User <> 'root' and user not like '%.%' and user <>'' ;

-- 定义 NOT FOUND类异常的HANDLER:

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

-- 打开游标

open cur_user ;

-- 取游标的一行数据到变量(取一个用户名),并推进游标

fetch cur_user into v_user ;

-- 每取一个user,构造一条授权语句,然后执行这条语句

-- (因为grant语句不接受变量,它会把变量名当成一个用户名,所以只能构造整条语句)

while not done do

set @query = CONCAT('GRANT SELECT ON table1 to ',v_user);

prepare statement from @query;

execute statement;

deallocate prepare statement;

-- 取下一个用户

fetch cur_user into v_user;

end while;

close cur_user;

end$$;

-- 调用过程,授权给所用用户:

call grant_select_table1_to_pubic();

-- 验证表“table1”的SELECT权限(果然有给所有用户授权哦)

select * from mysql.tables_priv where Table_name = 'table1';

如果用户很少的话,不如直接写grant语句。万一用户较多,可考虑以上方案。

另外,你也可以考虑使用角色:

create role if not exists 'SELECT_table1'; -- 创建角色

grant SELECT on table1 to 'SELECT_table1'; -- 授予该角色select table1的权限

grant 'SELECT_table1' to 用户1,用户2,....; -- 把角色的权限授予用户......,比写一堆grant语句省事

可惜的是,角色需要MySQL 8.0以上版本才支持!!!

mysql 授予所有权限_请问 :mysql数据库如何将某一个表的查询权限授予给所有用户?...相关推荐

  1. mysql sql 加参数_[sql]mysql参数(配置)手册

    [client] #客户端 port = 3306 #mysql客户端连接时的默认端口号 socket = /application/mysql-5.5.32/tmp/mysql.sock [mysq ...

  2. C++基础:什么是数据库?如何创建一个表?

    标题:C++基础:什么是数据库?如何创建一个表? 如果你是一个数据库新手,这将给你提供一些必需的基本知识.理解数据库是掌握MySQL的一个重要部分. 什么是数据库 数据库这个术语的用法很多,数据库是一 ...

  3. SQL数据库中如何把一个表中的数据复制到另一个表中?

    SQL数据库中如何把一个表中的数据复制到另一个表中?** 1整个表复制:** insert into table1 select * from table2 2部分列复制:** insert into ...

  4. 快速清除oracle多个表,Oracle数据库之批量清除一个表的数据,TB级别数据

    本文主要向大家介绍了Oracle数据库之批量清除一个表的数据,TB级别数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 有个需求,要求清理8TB的数据,只保留一个月的数据,现 ...

  5. mysql数据库连接配置路径_[zz]MySQL数据库主从同步安装与配置总结

    注意:本文出自"阿飞"的博客 ,如果要转载本文章,请与作者联系! 并注明来源: http://blog.sina.com.cn/s/blog_49fd52cf0100pog2.ht ...

  6. 打开mysql的远程连接_开启mysql的远程访问权限

    基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限.下面是基本的步骤: 1.登录到mysql中,为root进行远程访问的授权,执行下面的命令: mysql&g ...

  7. mysql数据库连接配置路径_关于mysql安装后更改数据库路径方法-linux环境

    使用yum安装mysql后,数据库路径一般和日志文件放在一个分区/var路径下. 久后,随着日志文件的增加,数据库的存放大小会显得不足,因此,建议安装mysql后将数据库路径更改到一个更加合理的分区存 ...

  8. 创建数据账号只有个别表的权限_创建MySQL用户 赋予某指定库表的权限

    摘自: http://renxiangzyq.iteye.com/blog/763837 update ERROR 1364 (HY000): Field 'ssl_cipher' doesn't h ...

  9. mysql拒绝远程连接_解决Mysql数据库拒绝远程连接和忘记密码的问题

    解决数据库忘记密码的问题 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 编辑m ...

最新文章

  1. 漫画:如何在数组中找到和为 “特定值” 的两个数?
  2. jmeter根据循环获取参数_jmeter forEach循环获取response参数值进行接口请求
  3. Scala Akka网络编程:Client Server网络通信(你问我答)案例
  4. excel修改列名 pandas_P9:pythonpandas玩转excel文件
  5. 华为首家欧洲生产厂选择落户法国小镇 将为4G/5G基站生产零部件
  6. lr接口压测_LoadRunner+Java接口性能测试
  7. AS3多线程快速入门(一):Hello World[
  8. Web Components 系列(十)—— 实现 MyCard 的基本布局
  9. “鬼影”浅析 - 反病毒,信息安全,网络安全,反木马,病毒资讯平台,安全解决方案,电脑使用技巧,杀毒软件交流,anti-virus,民间反病毒联盟
  10. 右浮动的顺序是反过来的,html中第一个是最后显示,而最后一个会在第一个显示。
  11. 在线计算机微积分,高等数学计算器
  12. selenium爬取淘宝评论信息
  13. 01 初识微信小程序
  14. 6 个常用的 API 接口在线管理平台
  15. 基于 MQTT 通讯一个简单的 Java工程
  16. 今日头条---后台开发笔试题
  17. matlab抽样仿真混叠图,数字信号处理及MATLAB仿真__前言
  18. 用户生命周期(User Lifetime)
  19. Error running 'PY201': Cannot run program C:\Users\GJ\AppData\Local\Programs\Python\Python37\python
  20. PHP2020语言排行榜,TIOBE公布了2020年12月编程语言排行榜

热门文章

  1. C 水仙花数 一个3位数,其中各位数字立方和等于该数本身
  2. 一个视频娱乐应用源码
  3. vivado的使用技巧整理
  4. Java面向对象封装和继承,阿里正式启动2021届春季校招
  5. 云计算系统运用了许多技术,最主要的核心技术是什么
  6. 打造数字人民币的大运应用场景
  7. ML之LoR:基于信用卡数据集利用LoR逻辑回归算法实现如何开发通用信用风险评分卡模型之以toad框架全流程讲解
  8. 口布杯花的60种叠法_史上最全的口布花折法教程,简单实用!超美呦~
  9. 编码自动识别工具 uchardet
  10. Word 同时设置中文字体和英文字体