千家信息网

MySQL列权限管理讲义

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本文主要给大家介绍MySQL列权限管理讲义,其所涉及的东西,从理论知识来获悉,有很多书籍、文献可供大家参考,从现实意义角度出发,累计多年的实践经验可分享给大家。列权限管理 MyS
千家信息网最后更新 2026年11月01日MySQL列权限管理讲义

本文主要给大家介绍MySQL列权限管理讲义,其所涉及的东西,从理论知识来获悉,有很多书籍、文献可供大家参考,从现实意义角度出发,累计多年的实践经验可分享给大家。

列权限管理

            MySQL是由列级别权限存在的。这也体现了MySQL高级特性。实现了限制用户对表上特定列的访问权限。            一般都是实现对表级别不具备访问权限,但是对某些列有访问权限。当然也存在其他情形。

1# 列权限相关的字典表:

(root@localhost)[mysql]> desc columns_priv;+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+| Field       | Type                                         | Null | Key | Default           | Extra                       |+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+| Host        | char(60)                                     | NO   | PRI |                   |                             || Db          | char(64)                                     | NO   | PRI |                   |                             || User        | char(16)                                     | NO   | PRI |                   |                             || Table_name  | char(64)                                     | NO   | PRI |                   |                             || Column_name | char(64)                                     | NO   | PRI |                   |                             || Timestamp   | timestamp                                    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP || Column_priv | set('Select','Insert','Update','References') | NO   |     |                   |                             |+-------------+----------------------------------------------+------+-----+-------------------+-----------------------------+7 rows in set (0.00 sec)
            总共7列,很好理解。一条特定的列级别权限共需要定义5个维度,host+db+user+table+column。可授予的            权限种类分为4中,select, insert, update, refernces。其中前3项已经投入使用,references在5.6中还未正式            生效。

2# 授权方法
列权限的授权方法和其他维度的授权方法有些许的差异,因为并非按照想像中会用on db.table.column这样的形式,而是将列名附带在授权种类之后:
测试update,确认没有update权限在name列上,表上也没有。

(test1@localhost)[sample2]> update smp set name='bbb';ERROR 1142 (42000): UPDATE command denied to user 'test1'@'localhost' for table 'smp'(test1@localhost)[sample2]> 
            对name列授权update:
(root@localhost)[mysql]> grant update (name) on sample2.smp to test1;Query OK, 0 rows affected (0.00 sec)
            再次尝试update  name列,更新成功。
(test1@localhost)[sample2]> update smp set name='bbb';Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0
            验证update  id列,可以预见的失败:
(test1@localhost)[sample2]> update smp set id=2;ERROR 1143 (42000): UPDATE command denied to user 'test1'@'localhost' for column 'id' in table 'smp'

3# 权限的查询:
4个方式,一个是show grants,另一个是跑sql查询字典表,DBA可以查询mysql.columns_priv, 普通用户可以查询information_schema.COLUMN_PRIVILEGES。两者有细微的差别,但主要列一样,第四种方式是查询mysql.tables_priv。

#1,直接show grants(root@localhost)[mysql]> show grants for test1;+------------------------------------------------------------------------------------------------------+| Grants for test1@%                                                                                   |+------------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'test1'@'%' IDENTIFIED BY PASSWORD '*CFA887C680E792C2DCF622D56FB809E3F8BE63CC' || GRANT SELECT ON `sample2`.* TO 'test1'@'%'                                                           || GRANT ALL PRIVILEGES ON `sample`.* TO 'test1'@'%' WITH GRANT OPTION                                  || GRANT SELECT ON `mysql`.`user` TO 'test1'@'%'                                                        || GRANT UPDATE (name) ON `sample2`.`smp` TO 'test1'@'%'                                                || GRANT ALL PRIVILEGES ON `sample`.`smp` TO 'test1'@'%'                                                |+------------------------------------------------------------------------------------------------------+6 rows in set (0.00 sec)#2,查询mysql.columns_priv;(root@localhost)[mysql]> select * from mysql.columns_priv;+------+---------+-------+------------+-------------+---------------------+-------------+| Host | Db      | User  | Table_name | Column_name | Timestamp           | Column_priv |+------+---------+-------+------------+-------------+---------------------+-------------+| %    | sample2 | test1 | smp        | name        | 0000-00-00 00:00:00 | Update      |+------+---------+-------+------------+-------------+---------------------+-------------+1 row in set (0.00 sec)#3,查询information_schema.COLUMN_PRIVILEGES(root@localhost)[mysql]> select * from information_schema.COLUMN_PRIVILEGES;+-------------+---------------+--------------+------------+-------------+----------------+--------------+| GRANTEE     | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | PRIVILEGE_TYPE | IS_GRANTABLE |+-------------+---------------+--------------+------------+-------------+----------------+--------------+| 'test1'@'%' | def           | sample2      | smp        | name        | UPDATE         | NO           |+-------------+---------------+--------------+------------+-------------+----------------+--------------+1 row in set (0.00 sec)#4,查询mysql.tables_priv(root@localhost)[mysql]> select * from mysql.tables_priv where db='sample2';+------+---------+-------+------------+----------------+---------------------+------------+-------------+| Host | Db      | User  | Table_name | Grantor        | Timestamp           | Table_priv | Column_priv |+------+---------+-------+------------+----------------+---------------------+------------+-------------+| %    | sample2 | test1 | smp        | root@localhost | 0000-00-00 00:00:00 |            | Update      |+------+---------+-------+------------+----------------+---------------------+------------+-------------+1 row in set (0.00 sec)

程序权限管理

            MySQL的程序(process/routine)            一个全局权限:CREATE ROUTINE,在user,db表中体现            三个对象级权限,主要分为procedure和function两个对象类型。对于程序而言他们的权限种类有            1,EXECUTE #执行权限            2,ALTER ROUTINE #修改权限            3,GRANT  #授予权限            相关的字典表:
(root@localhost)[mysql]> desc procs_priv;+--------------+----------------------------------------+------+-----+-------------------+-----------------------------+| Field        | Type                                   | Null | Key | Default           | Extra                       |+--------------+----------------------------------------+------+-----+-------------------+-----------------------------+| Host         | char(60)                               | NO   | PRI |                   |                             || Db           | char(64)                               | NO   | PRI |                   |                             || User         | char(16)                               | NO   | PRI |                   |                             || Routine_name | char(64)                               | NO   | PRI |                   |                             || Routine_type | enum('FUNCTION','PROCEDURE')           | NO   | PRI | NULL              |                             || Grantor      | char(77)                               | NO   | MUL |                   |                             || Proc_priv    | set('Execute','Alter Routine','Grant') | NO   |     |                   |                             || Timestamp    | timestamp                              | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |+--------------+----------------------------------------+------+-----+-------------------+-----------------------------+
8 rows in set (0.00 sec)

看了以上MySQL列权限管理讲义介绍,希望能给大家在实际运用中带来一定的帮助。本文由于篇幅有限,难免会有不足和需要补充的地方,大家可以继续关注行业资讯板块,会定期给大家更新行业新闻和知识,如有需要更加专业的解答,可在官网联系我们的24小时售前售后,随时帮您解答问题的。

权限 查询 管理 字典 方法 种类 程序 级别 讲义 对象 方式 用户 知识 维度 行业 更新 解答 细微 高级 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会副主任毛军 没上市的科技互联网公司 互联网科技网站 左右互联网络科技 哈尔滨新华互联网科技 顺网科技2021年互联网排名 云创客互联网科技公司 互联网科技产品 承德科技产业互联网发展 互联网科技大奖都有哪些公司 为客找房互联网科技公司怎么样 梅州GM互联网络科技有限公司 广州百诚互联网科技有限公司官网 互联网风格科技公司名称 互联网时代科技型公司的机会 北京品多多互联网科技有限公司 黑龙江互联网科技公司 安徽九吞吴互联网科技有限公司 优雇互联网科技有限公司 高科技和互联网的现代国家 广东万易互联网科技有限公司惠州分公司 中关村互联网 科技集团 以后互联网后是啥科技 佳云科技和互联网广告 互联网科技商业 北京市互联网新科技 领航科技大厦互联网公司 有人说阿里系是互联网科技企业 同城互联网络科技 互联网科技大会大佬
0