MySQL的Grant命令用法与知识点

  • 时间:
  • 7577人关注

mysql中可以通过Grant命令为数据库赋予用户权限,这里简单介绍下Grant的使用方法,需要的朋友可以参考下,另外这篇文章主要知识点是关于MySQL、Grant、MySQL命令的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子资料:

教程详情电子资料
  • 教程类别:MySQL命令
  • 编辑整理:仰姣妍
  • 教程字数:3293字节
  • 阅读时间:大概15分钟
  • 下载本教程(DOC版)
  • MySQL是怎样运行的:从根儿上理解 MySQL
  • Centos7下安装mysql5.7的步骤
  • 高性能MySQL
  • MySQL8从入门到精通
  • MySQL8 Cookbook(中文版)
  • 本文实例,运行于 MySQL 5.0 及以上版本。

    MySQL 赋予用户权限命令的简单格式可概括为:

    grant 权限 on 数据库对象 to 用户 

    一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。

     

     

    grant select on testdb.* to common_user@'%'
    grant insert on testdb.* to common_user@'%'
    grant update on testdb.* to common_user@'%'
    grant delete on testdb.* to common_user@'%'

     

    或者,用一条 MySQL 命令来替代:

     

     

    grant select, insert, update, delete on testdb.* to common_user@'%'

     

    二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。

    grant 创建、修改、删除 MySQL 数据表结构权限。

     

     

    grant create on testdb.* to developer@'192.168.0.%';
    grant alter  on testdb.* to developer@'192.168.0.%';
    grant drop   on testdb.* to developer@'192.168.0.%';

     

    grant 操作 MySQL 外键权限。

     

     
    grant references on testdb.* to developer@'192.168.0.%';

     

    grant 操作 MySQL 临时表权限。

     

     

    grant create temporary tables on testdb.* to developer@'192.168.0.%';

     

    grant 操作 MySQL 索引权限。

    grant index on testdb.* to developer@'192.168.0.%';

    grant 操作 MySQL 视图、查看视图源代码 权限。

     

     

    grant create view on testdb.* to developer@'192.168.0.%';
    grant show   view on testdb.* to developer@'192.168.0.%';

     

    grant 操作 MySQL 存储过程、函数 权限。

     

     

    grant create routine on testdb.* to developer@'192.168.0.%'; -- now, can show procedure status
    grant alter  routine on testdb.* to developer@'192.168.0.%'; -- now, you can drop a procedure
    grant execute        on testdb.* to developer@'192.168.0.%';

     

    三、grant 普通 DBA 管理某个 MySQL 数据库的权限。

     

     

    grant all privileges on testdb to dba@'localhost'

     

    其中,关键字 “privileges” 可以省略。

    四、grant 高级 DBA 管理 MySQL 中所有数据库的权限。

     

     

    grant all on *.* to dba@'localhost'

     

    五、MySQL grant 权限,分别可以作用在多个层次上。

    1. grant 作用在整个 MySQL 服务器上:

     

     

    grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表。
    grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库

     

    2. grant 作用在单个数据库上:

     

     

    grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。

     

    3. grant 作用在单个数据表上:

     

     

    grant select, insert, update, delete on testdb.orders to dba@localhost;

     

    这里在给一个用户授权多张表时,可以多次执行以上语句。例如:

     

     

    grant select(user_id,username) on smp.users to mo_user@'%' identified by '123345';
    grant select on smp.mo_sms to mo_user@'%' identified by '123345';

     

    4. grant 作用在表中的列上:

     

     
    grant select(id, se, rank) on testdb.apache_log to dba@localhost;

     

    5. grant 作用在存储过程、函数上:

     

     

    grant execute on procedure testdb.pr_add to 'dba'@'localhost'
    grant execute on function testdb.fn_add to 'dba'@'localhost'

     

    六、查看 MySQL 用户权限

    查看当前用户(自己)权限:

     

     
    show grants;

     

    查看其他 MySQL 用户权限:

     

     
    show grants for dba@localhost;

     

    七、撤销已经赋予给 MySQL 用户权限的权限。

    revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

     

     

    grant  all on *.* to   dba@localhost;
    revoke all on *.* from dba@localhost;

     

    八、MySQL grant、revoke 用户权限注意事项

    1. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。

    2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“

     

     
    grant select on testdb.* to dba@localhost with grant option;

     

    这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。

    遇到 SELECT command denied to user '用户名'@'主机名' for table '表名' 这种错误,解决方法是需要把吧后面的表名授权,即是要你授权核心数据库也要。

    我遇到的是SELECT command denied to user 'my'@'%' for table 'proc',是调用存储过程的时候出现,原以为只要把指定的数据库授权就行了,什么存储过程、函数等都不用再管了,谁知道也要把数据库mysql的proc表授权

    mysql授权表共有5个表:user、db、host、tables_priv和columns_priv。

    授权表的内容有如下用途:

    user表
    user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真考虑。

    db表
    db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

    host表
    host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。

    tables_priv表
    tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。

    columns_priv表
    columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。


    上一篇:MySQL修改表(alter table)实例方法

    下一篇:mysql insert if not exists防止插入重复记录的实例写法

    相关内容

    • Python使用pycharm导入pymysql教程

      这篇文章主要介绍了Python使用pycharm导入pymysql教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

      04-19Python pycharm导入pymysql

      阅读更多
    • 如何解决JDBC连接Mysql 8.0.11出现的各种问题

      这篇文章主要介绍了使用JDBC连接Mysql 8.0.11出现了各种错误的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学

      01-16使用JDBC连接Mysql 8.0.11出现了各种错误的解决

      阅读更多
    • 示例讲解php+mysql查询实现无限下级分类树输出

      这篇文章主要介绍了php+mysql查询实现无限下级分类树输出,结合实例形式分析了php+MySQL查询实现的树状分类输出功能,涉及php数据库查询与数组遍历等相关操作技巧,需要的朋友可以参考下

      02-14php+mysql查询实现无限下级分类树输出示例

      阅读更多
    • JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

      这篇文章主要给大家介绍了关于JDBC中如何使用Java8的日期LocalDate和LocalDateTime的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下

      07-08JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

      阅读更多
    • mysql服务1067错误多种解决方案汇总

      今天我的mysql服务器突然出来了1067错误提示,无法正常启动了,我今天从网上找寻了大量的解决mysql服务1067错误的办法,有需要的朋友可以看看

      01-29mysql服务1067错误多种解决方案分享

      阅读更多
    • 高性能MySQL

      高性能MySQL

      大小:392 MBMySQL

      点击下载
    • MySQL运维内参

      MySQL运维内参

      《MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实践》是一本介绍MySQL数据库知识的专业书籍,从核心原理到最佳实践,深入浅出、抽丝剥茧地进行讲解,不仅从源码和运维两个角度介绍

      大小:162 MBMySQL

      点击下载
    • PHP&MySQL跨设备网站开发实例精粹

      PHP&MySQL跨设备网站开发实例精粹

      这本书从易学实用的角度详细讲解了PHP、HTML5语法,MySQL数据库存取,网页之间的信息传递、表单的后端处理等,提供了丰富的网站开发范例,欢迎下载

      大小:80.9 MBPHP编程

      点击下载
    • PHP、MySQL与JavaScript学习手册(第4版)

      PHP、MySQL与JavaScript学习手册(第4版)

      本书有借助面向对象的编程基础,深入学习PHP。研究MySQL,从数据库结构到复杂查询。掌握JavaScript语言,以及带有jQuery的增强功能。调用Ajax进行后台浏览器/服务器通信等,欢迎免费下载

      大小:76 MBPHP

      点击下载
    • MySQL 8从入门到精通

      MySQL 8从入门到精通

      MySQL被设计方案为1个可移植的数据库查询,基本上能在当今全部的电脑操作系统上运作,如Linux、Solaris、FreeBSD、Mac和Windows。开源系统MySQL数据库查询发展趋势到今日,早已具备了十分普遍的客

      大小:168 MBMySQL8

      点击下载
    • PHP+MySQL动态网站开发从入门到精通

      PHP+MySQL动态网站开发从入门到精通

      《PHP+MySQL动态网站开发从入门到精通》本书循序渐进地介绍了PHP 7 MySQL 5.7开发动态网站的主要知识和技能,提供案例、课件、命令速查手册,让你看得懂、学得会、做得出,教你快速成为网站应用开发高手。

      大小:36.2 MB网站开发

      点击下载
    • MySQL必知必会

      MySQL必知必会

      大小:5.7 MBMySQL

      点击下载
    • PHP与MySQL高性能应用开发

      PHP与MySQL高性能应用开发

      PHP与MySQL高性能应用开发书中不仅讲解了OOP、设计模式,也讲解了如何进行性能优化和调试。甚至,还对于语言之外的代码重构进行了讲解,本书面向的对象是有一定PHP基础,但是又想深入学习的PHP开发者,欢迎免费下载

      大小:60.5 MBPHP开发

      点击下载
    • MySQL8从入门到精通

      MySQL8从入门到精通

      大小:88592 MB MMySQL8

      点击下载
    • MySQL与MariaDB学习指南

      MySQL与MariaDB学习指南

      MySQL与MariaDB学习指南 使读者不仅能够深入了解MySQL这种主流数据库,还能全面掌握作为开源数据库新秀的MariaDB的使用方法。书中内容由浅至深、层层深入,从分步介绍如何安装MySQL和MariaDB,到

      大小:68.9 MB数据库

      点击下载

    学习笔记