MySQL列权限管理讲义
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本文主要给大家介绍MySQL列权限管理讲义,其所涉及的东西,从理论知识来获悉,有很多书籍、文献可供大家参考,从现实意义角度出发,累计多年的实践经验可分享给大家。列权限管理 MyS
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
战地5服务器断网
南京如初网络技术有限公司
服务器 文件删除日志
石家庄通惠网络技术
软件开发企业确认收入
长沙自动化设备管理软件开发
超微服务器如何查看硬件故障
服务器安全隐患怎么查
盐城专业网络安全准入控制系统
网络安全实验厂商
政务网络安全的概念
软件开发还是网站开发好
服务器厂商100名
自媒体时代的网络安全
电脑服务器龙头企业
上海网络安全教育考试
程序设计和数据库哪个简单
数据库期末复习sql语句
湖北省计算机网络技术比赛
安全狗 黑数据库
数据库应用技术课程报告
如何理解网络安全法七十二条
广电网络安全机房建设规范
数据库分组排序
服务器安全组在哪设置
身份验证数据库怎么连接
计算机网络技术考二建什么专业
网络代理服务器ip
显示数据库的语法格式是
服务器版 winpe