Rootop 服务器运维与web架构

关于mysql视图运维过程中的注意事项

# 今天遇到的问题
mysql备份脚本无法备份,提示错误不能锁表:

mysqldump: Got error: 1045: Access denied for user 'xxx'@'%' (using password: YES) when using LOCK TABLES

在发现问题的前一天删过一个历史遗留账号(备份脚本之前一直是运行正常的)。

在备份脚本加入 --skip-lock-tables 参数不锁表备份,提示错误:
mysqldump: Couldn't execute 'SHOW FIELDS FROM `vm_dataforradarshow`': SELECT command denied to user ''@'%' for column 'prodId' in table '表名已删除' (1143)

排错:
把 SHOW FIELDS FROM `vm_dataforradarshow` 语句放到sql中执行,也报错。这个 vm_dataforradarshow 是一个视图,忽然想起来,视图是有权限的。
里面会包含了是哪个用户创建的,并且在执行视图的时候会用这个用户去执行,结果用户昨天被删掉了,自然执行失败。备份脚本也备份失败。
(因为用的阿里云rds,也怀疑过用户权限问题,创建了一个高权限账号(相当于root),也是备份失败。)

之前遇到的一个问题:
测试环境数据库是user1账户,创建视图也是用user1去创建的。
到正式上,是一个独立的普通用户,比如user2,结果导入sql脚本一直失败,具体错误提示忘记了。
只要把sql脚本里,视图中的user1修改成user2才解决。

避免:
1、开发过程中尽量避免视图使用,毕竟要多耗费一次时间及系统资源。
2、开发测试环境要和正式一致,避免出现我这种账号问题。

 

原创文章,转载请注明。本文链接地址: http://www.rootop.org/pages/4133.html

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。