MySQL视图查看及权限说明
查看视图是指查看数据库中,已经存在的视图的定义 必须要有SHOW VIEW的权限
查看视图有三种方式:
DESCRIBE语句
使用DESCRIBE语句,查看视图
MySQL中,使用DESCRIBE可以查看视图的字段信息,其中,包括字段名、字段类型等信息
语法格式:
DESCRIBE 视图名;
或者
DESC 视图名;
root@sso_db_69 17:58: [escdb]> desc oa_org;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id | varchar(36) | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
| fullName | varchar(255) | YES | | NULL | |
| resource_id | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
参数说明
NULL,表示该列是否可以存储NULL值
Key,表示该列是否已经编制索引
Default,表示该列是否有默认值
Extra,表示获取到的与给定列相关的附加信息
查看视图的名称、创建语句、字符编码等信息:
语法格式
SHOW CREATE VIEW 视图名;
参数说明
视图名,表示要查看的视图名称
show create view oa_org\G;
*************************** 1. row ***************************
View: oa_org
Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `oa_org` AS select `pi_accorg`.`id` AS `id`,`pi_accorg`.`name` AS `name`,`pi_accorg`.`fullName` AS `fullName`,`pi_accorg_pi_externalresource`.`resource_id` AS `resource_id` from (`pi_accorg` join `pi_accorg_pi_externalresource` on((`pi_accorg_pi_externalresource`.`accorg_id` = `pi_accorg`.`id`))) where (`pi_accorg_pi_externalresource`.`resource_id` = 'OA')
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
1 row in set (0.00 sec)
查看基本信息:
包括存储引擎、创建时间等,Comment项没有信息,说明这是一个表,而不是视图,这就是视图和普通表最直接的区别
show table status like 'oa_org'\G;
*************************** 1. row ***************************
Name: oa_org
Engine: NULL
Version: NULL
Row_format: NULL
Rows: NULL
Avg_row_length: NULL
Data_length: NULL
Max_data_length: NULL
Index_length: NULL
Data_free: NULL
Auto_increment: NULL
Create_time: NULL
Update_time: NULL
Check_time: NULL
Collation: NULL
Checksum: NULL
Create_options: NULL
Comment: VIEW
1 row in set (0.01 sec)
开启查看视图权限:
grant show view on database.* to username@'192.168.%';
创建视图权限:
grant create view on database.* to username@'xxx.xxx.%';
如果赋权以后不能查看视图数据内容,需要确认视图定义者是否存在,默认定义者安全设置是DEFINER,保证视图定义账号存在即可,不存在则需要创建相同账号,否则不能查看视图数据内容,如果要执行则
definer和invoker的区别
在创建视图或者是存储过程的时候,是需要定义安全验证方式的(也就是安全性SQL SECURITY),其值可以为definer或invoker,表示在执行过程中,使用谁的权限来执行。
definer:由definer(定义者)指定的用户的权限来执行
当定义为DEFINER时,必须数据库中存在DEFINER指定的用户,并且该用户拥有对应的操作权限,才能成功执行。与当前用户是否有权限无关。
invoker:由调用这个视图(存储过程)的用户的权限来执行
当定义为INVOKER时,只要执行者有执行权限,就可以成功执行。
Tag标签:「权限 视图」更新时间:「2021-11-03 16:03:42」阅读次数:「1398」