开发发来问题说,开发环境的几个视图已经授权,但是指定用户登录后却无法访问。报错信息如下:

  1. [SQL]select * from ipost;
  2. [Err] - Access denied for user 'iqm'@'%' (using password: YES)

正式环境可以正常访问。

一开始以为是权限没有给予正确。

查看正式的授权情况:

  1. mysql> show grants for tiq\G
  2. *************************** . row ***************************
  3. Grants for tiq@%: GRANT USAGE ON *.* TO 'tiq'@'%'
  4. *************************** . row ***************************
  5. Grants for tiq@%: GRANT SELECT ON `tuc`.`iperson` TO 'tiq'@'%'
  6. *************************** . row ***************************
  7. Grants for tiq@%: GRANT SELECT ON `tuc`.`idept` TO 'tiq'@'%'
  8. *************************** . row ***************************
  9. Grants for tiq@%: GRANT SELECT ON `tuc`.`icomp` TO 'tiq'@'%'
  10. *************************** . row ***************************
  11. Grants for tiq@%: GRANT SELECT ON `tuc`.`ipost` TO 'tiq'@'%'
  12. rows in set (0.00 sec)
  13.  
  14. mysql>

查看测试环境授权情况:

  1. mysql> show grants for tiq\G
  2. *************************** . row ***************************
  3. Grants for tiq@%: GRANT USAGE ON *.* TO 'tiq'@'%'
  4. *************************** . row ***************************
  5. Grants for tiq@%: GRANT SELECT ON `tuc`.`idept` TO 'tiq'@'%'
  6. *************************** . row ***************************
  7. Grants for tiq@%: GRANT SELECT ON `tuc`.`icomp` TO 'tiq'@'%'
  8. *************************** . row ***************************
  9. Grants for tiq@%: GRANT SELECT ON `tuc`.`iperson` TO 'tiq'@'%'
  10. *************************** . row ***************************
  11. Grants for tiq@%: GRANT SELECT ON `tuc`.`ipost` TO 'tiq'@'%'
  12. rows in set (0.00 sec)
  13.  
  14. mysql>

对比发现授权没有问题。

然后查看其中一个视图在正式、测试环境中的定义。

正式环境查看视图的定义:

  1. mysql> show create view ipost\G
  2. *************************** . row ***************************
  3. View: ipost
  4. 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`
  5. character_set_client: utf8
  6. collation_connection: utf8_general_ci
  7. row in set (0.00 sec)
  8.  
  9. mysql>

测试环境查看视图的定义:

  1. mysql> show create view ipost\G
  2. *************************** . row ***************************
  3. View: ipost
  4. 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`
  5. character_set_client: utf8
  6. collation_connection: utf8_general_ci
  7. row in set, warning (0.00 sec)
  8.  
  9. mysql>

从这里可以发现,结果显示有个一个warning存在。

查看该warning的具体内容:

  1. mysql> show warnings;
  2. +-------+------+--------------------------------------------------------------+
  3. | Level | Code | Message |
  4. +-------+------+--------------------------------------------------------------+
  5. | Note | | The user specified as a definer ('uadmin'@'%') does not exist |
  6. +-------+------+--------------------------------------------------------------+
  7. row in set (0.00 sec)

从这里可以看出,视图创建的时候,将正式环境的用户带了过来,但是测试环境并不存在该用户。其实原因很简单,就开发从ide中直接从正式环境把定义语句导出后在测试环境执行了。

MySQL视图已经授权,但是无法访问的更多相关文章

  1. 授权指定ip访问mysql 服务器

      授权指定ip访问访问 授权ROOT使用密码1234从应用服务器主机连接到mysql服务器 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'xxx. ...

  2. mysql 视图,存储过程,游标,触发器,用户管理简单应用

    mysql视图——是一个虚拟的表,只包含使用时动态查询的数据 优点:重用sql语句,简化复杂的SQL操作,保护数据,可以给用户看到表的部分字段而不是全部,更改数据格式和表现形式 规则: 名称唯一,必须 ...

  3. Mysql 视图 游标 触发器 存储过程 事务

    Mysql 视图 触发器 存储过程 游标 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中 ...

  4. Security » Authorization » 基于视图的授权

    View Based Authorization¶ 基于视图的授权 44 of 46 people found this helpful Often a developer will want to ...

  5. 深入解析MySQL视图view

    阅读目录---深入解析MySQL视图view 创建视图 查看视图 视图的更改 create or replace view alter DML drop 使用with check option约束 嵌 ...

  6. MySQL数据库grant授权命令

    MySQL数据库grant授权命令 制作人:全心全意 grant授权命令的使用 grant授权命令使用语法: grant 权限 on 数据库对象 to 用户 grant 权限 on 数据库对象 to ...

  7. mysql添加,授权,删除用户以及连接数据库Can't connect to MySQL server on '192.168.31.106' (113)错误排查

    centos7下面操作mysql添加,授权,删除用户 添加用户 以root用户登录数据库,运行以下命令: create user test identified by '; 上面创建了用户test,密 ...

  8. 2020重新出发,MySql基础,MySql视图&索引&存储过程&触发器

    @ 目录 视图是什么 视图的优点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 MySQL创建视图 ...

  9. centos7 打开mysql 3306端口并 设置外部访问

    mysql安装后默认是localhost访问,如果需要外部访问可以设置一个新的账号把host改为%,意味着所有ip均可以访问 grant all privileges on *.* to 'outUs ...

随机推荐

  1. 使用Feign时报错Service id not legal hostname

    报错Service id not legal hostname的原因是服务名称不能带有下划线,可以使用中划线

  2. Fibre Channel address weaknesses

    http://searchitchannel.techtarget.com/feature/Fibre-Channel-address-weaknesses Figure 2.1 Five layer ...

  3. Linux实现多线程高速下载

    使用Wget下载,有时候速度挺慢的. 有没有好办法呢? 一.解决方案 安装axel 安装方法: yum -y install epel-release .el7.x86_64.rpm rpm -ivh ...

  4. spring boot-mybatis全注解化(3)

    pom.xml <!-- 引入mybatis --> <dependency> <groupId>org.mybatis.spring.boot</group ...

  5. nginx 监听一个端口同时支持https和http

    nginx 如何想同时支持https和http,必须监听两个不同的端口,比如http:listen 80; https:listen 443;   server { listen 1234 ssl;s ...

  6. java 生成二维码、可带LOGO、可去白边

      1.准备工作 所需jar包: JDK 1.6: commons-codec-1.11.jar core-2.2.jar javase-2.2.jar JDK 1.7: commons-codec- ...

  7. having 与where 的异同点

    having 与where 的异同点: where针对表中的列发挥作用,查询数据 having对查询结果中的列发挥作用,筛选数据 #查询本店商品价格比市场价低多少钱,输出低200元以上的商品 ; // ...

  8. rhel7.x配置本地yum

    转载:http://www.mvpbang.com/articles/2017/12/22/1513948827684.html rhel7.x配置本地yum 环境: centos7.4 vmarew ...

  9. FTP下载工具

    开源的FTP下载工具,FTP搬运工.... 01.FileZilla_3.21.0_win64 官方地址: https://filezilla-project.org/ 下载地址: http://pa ...

  10. m4, autoconf

    http://www.gnu.org/software/m4/m4.html GNU M4 is an implementation of the traditional Unix macro pro ...