MySQL视图已经授权,但是无法访问
开发发来问题说,开发环境的几个视图已经授权,但是指定用户登录后却无法访问。报错信息如下:
[SQL]select * from ipost;
[Err] - Access denied for user 'iqm'@'%' (using password: YES)
正式环境可以正常访问。
一开始以为是权限没有给予正确。
查看正式的授权情况:
mysql> show grants for tiq\G
*************************** . row ***************************
Grants for tiq@%: GRANT USAGE ON *.* TO 'tiq'@'%'
*************************** . row ***************************
Grants for tiq@%: GRANT SELECT ON `tuc`.`iperson` TO 'tiq'@'%'
*************************** . row ***************************
Grants for tiq@%: GRANT SELECT ON `tuc`.`idept` TO 'tiq'@'%'
*************************** . row ***************************
Grants for tiq@%: GRANT SELECT ON `tuc`.`icomp` TO 'tiq'@'%'
*************************** . row ***************************
Grants for tiq@%: GRANT SELECT ON `tuc`.`ipost` TO 'tiq'@'%'
rows in set (0.00 sec) mysql>
查看测试环境授权情况:
mysql> show grants for tiq\G
*************************** . row ***************************
Grants for tiq@%: GRANT USAGE ON *.* TO 'tiq'@'%'
*************************** . row ***************************
Grants for tiq@%: GRANT SELECT ON `tuc`.`idept` TO 'tiq'@'%'
*************************** . row ***************************
Grants for tiq@%: GRANT SELECT ON `tuc`.`icomp` TO 'tiq'@'%'
*************************** . row ***************************
Grants for tiq@%: GRANT SELECT ON `tuc`.`iperson` TO 'tiq'@'%'
*************************** . row ***************************
Grants for tiq@%: GRANT SELECT ON `tuc`.`ipost` TO 'tiq'@'%'
rows in set (0.00 sec) mysql>
对比发现授权没有问题。
然后查看其中一个视图在正式、测试环境中的定义。
正式环境查看视图的定义:
mysql> show create view ipost\G
*************************** . row ***************************
View: ipost
Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`uadmin`@`%` SQL SECURITY DEFINER VIEW `ipost` AS select `t_post`.`id` AS `id`,`t_post`.`postcode` AS `postcode`,`t_post`.`postname` AS `postname`,`t_post`.`pk_job` AS `pk_job`,`t_post`.`job_code` AS `job_code`,`t_post`.`job_name` AS `job_name`,`t_post`.`org_code` AS `org_code`,`t_post`.`org_name` AS `org_name`,`t_post`.`pk_org` AS `pk_org`,`t_post`.`pk_post` AS `pk_post`,`t_post`.`status` AS `STATUS`,`t_post`.`enablestate` AS `enablestate`,`t_post`.`writebackoperate` AS `writebackoperate`,`t_post`.`writebackts` AS `writebackts`,`t_post`.`syncts` AS `syncts`,`t_post`.`operate` AS `operate`,`t_post`.`dirty` AS `dirty`,`t_post`.`ts` AS `ts`,`t_post`.`del_flag` AS `del_flag` from `t_post`
character_set_client: utf8
collation_connection: utf8_general_ci
row in set (0.00 sec) mysql>
测试环境查看视图的定义:
mysql> show create view ipost\G
*************************** . row ***************************
View: ipost
Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`uadmin`@`%` SQL SECURITY DEFINER VIEW `ipost` AS select `t_post`.`id` AS `id`,`t_post`.`postcode` AS `postcode`,`t_post`.`postname` AS `postname`,`t_post`.`pk_job` AS `pk_job`,`t_post`.`job_code` AS `job_code`,`t_post`.`job_name` AS `job_name`,`t_post`.`org_code` AS `org_code`,`t_post`.`org_name` AS `org_name`,`t_post`.`pk_org` AS `pk_org`,`t_post`.`pk_post` AS `pk_post`,`t_post`.`status` AS `STATUS`,`t_post`.`enablestate` AS `enablestate`,`t_post`.`writebackoperate` AS `writebackoperate`,`t_post`.`writebackts` AS `writebackts`,`t_post`.`syncts` AS `syncts`,`t_post`.`operate` AS `operate`,`t_post`.`dirty` AS `dirty`,`t_post`.`ts` AS `ts`,`t_post`.`del_flag` AS `del_flag` from `t_post`
character_set_client: utf8
collation_connection: utf8_general_ci
row in set, warning (0.00 sec) mysql>
从这里可以发现,结果显示有个一个warning存在。
查看该warning的具体内容:
mysql> show warnings;
+-------+------+--------------------------------------------------------------+
| Level | Code | Message |
+-------+------+--------------------------------------------------------------+
| Note | | The user specified as a definer ('uadmin'@'%') does not exist |
+-------+------+--------------------------------------------------------------+
row in set (0.00 sec)
从这里可以看出,视图创建的时候,将正式环境的用户带了过来,但是测试环境并不存在该用户。其实原因很简单,就开发从ide中直接从正式环境把定义语句导出后在测试环境执行了。
MySQL视图已经授权,但是无法访问的更多相关文章
- 授权指定ip访问mysql 服务器
授权指定ip访问访问 授权ROOT使用密码1234从应用服务器主机连接到mysql服务器 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'xxx. ...
- mysql 视图,存储过程,游标,触发器,用户管理简单应用
mysql视图——是一个虚拟的表,只包含使用时动态查询的数据 优点:重用sql语句,简化复杂的SQL操作,保护数据,可以给用户看到表的部分字段而不是全部,更改数据格式和表现形式 规则: 名称唯一,必须 ...
- Mysql 视图 游标 触发器 存储过程 事务
Mysql 视图 触发器 存储过程 游标 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中 ...
- Security » Authorization » 基于视图的授权
View Based Authorization¶ 基于视图的授权 44 of 46 people found this helpful Often a developer will want to ...
- 深入解析MySQL视图view
阅读目录---深入解析MySQL视图view 创建视图 查看视图 视图的更改 create or replace view alter DML drop 使用with check option约束 嵌 ...
- MySQL数据库grant授权命令
MySQL数据库grant授权命令 制作人:全心全意 grant授权命令的使用 grant授权命令使用语法: grant 权限 on 数据库对象 to 用户 grant 权限 on 数据库对象 to ...
- mysql添加,授权,删除用户以及连接数据库Can't connect to MySQL server on '192.168.31.106' (113)错误排查
centos7下面操作mysql添加,授权,删除用户 添加用户 以root用户登录数据库,运行以下命令: create user test identified by '; 上面创建了用户test,密 ...
- 2020重新出发,MySql基础,MySql视图&索引&存储过程&触发器
@ 目录 视图是什么 视图的优点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 MySQL创建视图 ...
- centos7 打开mysql 3306端口并 设置外部访问
mysql安装后默认是localhost访问,如果需要外部访问可以设置一个新的账号把host改为%,意味着所有ip均可以访问 grant all privileges on *.* to 'outUs ...
随机推荐
- mybatis学习资源
官网:http://mybatis.org/index.html 代码:https://code.google.com/p/mybatisnet/ wiki:http://zh.wikipedia.o ...
- Discuz常见小问题-如何安装模板,使用模板
点击应用,获取更多插件 在模板页面中选择需要的类型(需要注册一个账号) 找好一个模板之后,点击安装应用(一般也会有演示) 安装完成之后可以在界面-风格管理中选择安装好的模板,选中新的模板,点击提交即可 ...
- .geodatabase与gdb的相互转换
.geodatabase长得是gdb的全称,确实它们有一定的关系,但也有区别. 简单认识一下 有人也问过我,gdb外表像个文件夹,是怎么实现的.gdb数据库是ESRI特有的数据库,它是一些数据集定义. ...
- javascript实现金额大写转换函数
function transform(tranvalue) { try { var i = 1; var dw2 = new Array("", "万", &q ...
- 牛客网-《剑指offer》-用两个栈实现队列
题目:http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6 C++ class Solution { public: vo ...
- 查看java进程启动的详细参数和过程
jsp 查看java进程: 6448 main 然后,使用jinfo pid 查看: jinfo 6448 有一行VM Flages:表示启动参数 VM Flags: -Dproc_main -*** ...
- How to check WWN and Multipathing on Windows Server
There are many ways to find the World Wide Name (WWN) of fibre channel HBA connected to windows serv ...
- Netcore使用MailKit进行邮件发送
public void TestSendMailDemo() { var message = new MimeKit.MimeMessage(); message.From.Add(new MimeK ...
- 保密员(baomi)
#include<iostream> #include<string> #include<stdio.h> #include<algorithm> #i ...
- stingray前端架构总体设计及运行过程
SPA 单页应用程序,在一个页面内用ajax技术实现所有的功能的web程序,我们称之为单页应用,明显的特点就是第一次加载之后地址栏非参数部分不再发生变化.大家观察会发现 WIP系统就是一个SPA.我们 ...