mysql视图怎么还原,mysql 还原
mysql 视图
1、什么是视图
创新互联专注于淇县网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供淇县营销型网站建设,淇县网站制作、淇县网页设计、淇县网站官网定制、成都微信小程序服务,打造淇县网络公司原创品牌,更为您提供淇县网站排名全网营销落地服务。
视图:MySQL从5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果
2、视图应用场景
多个地方用到同样的查询结果该查询结果使用的sql语句较复杂
4、视图的好处
使用简单安全数据独立
5、创建或者修 改视图
创建视图的语法:
修改视图的语法
6、视图更新性
视图的可更新性和视图中查询的定义有关系,以下类型的视图是不能更新的。(1)包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all(2)常量视图(3)Select中包含子查询(4)join(5)from一个不能更新的视图(6)where子句的子查询引用了from子句中的表
7、删除视图的语法
用户可以一次删除一个或者多个视图,前提是必须有该视图的drop权限。
8、查看视图结构的语法
show tables;如果需要查询某个视图的定义,可以使用show create view命令进行查看
如何恢复被删除的视图
用户可以使用以下方法恢复:
1、如果以前点过保存按钮,那么在原来的位置找一个同名后缀为bak的文件,改为dwg后缀就好;
2、如果最近的保存已经是很久以前的事了,而在菜单“工具/选项”对话框的“打开和保存”选项卡中“自动保存/保存间隔分钟数”栏内的设置时间的是较短的时间(默认的是10分钟),还可以到“文件”选项卡“自动保存文件位置”一栏所指定的路径处,找到后缀为“打开和保存”选项卡中“临时文件的扩展名”指定的类型的文件,将后缀改为.dwg后,即可使用;
3、如果只是打开过没保存过,那么马上用finaldate或360恢复找已删除文件;
4、如果是用文件粉碎机删掉的或是在这个盘符下做过文件写入,暂时无法恢复。
我把linux下的mysql文件夹拷贝了下来,想在另一台linux下的mysql上恢复数据,多个数据库文件,出现1146错误
项目上 MySQL 还原 SQL 备份经常会碰到一个错误如下,且通常出现在导入视图、函数、存储过程、事件等对象时,其根本原因就是因为导入时所用账号并不具有SUPER 权限,所以无法创建其他账号的所属对象。ERROR 1227 (42000) : Access denied; you need (at least one of) the SUPER privilege(s) for this operation常见场景:1. 还原 RDS 时经常出现,因为 RDS 不提供 SUPER 权限;2. 由开发库还原到项目现场,账号权限等有所不同。
处理方式:
1. 在原库中批量修改对象所有者为导入账号或修改 SQL SECURITY 为 Invoker;2. 使用 mysqldump 导出备份,然后将 SQL 文件中的对象所有者替换为导入账号。
二、问题原因我们先来看下为啥会出现这个报错,那就得说下 MySQL 中一个很特别的权限控制机制,像视图、函数、存储过程、触发器等这些数据对象会存在一个 DEFINER 和一个 SQL SECURITY 的属性,如下所示:
--视图定义CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`%` SQL SECURITY DEFINER VIEW v_test
--函数定义CREATE DEFINER=`root`@`%` FUNCTION `f_test()` RETURNS varchar(100) SQL SECURITY DEFINER
--存储过程定义CREATE DEFINER=`root`@`%` PROCEDURE `p_test`() SQL SECURITY DEFINER
--触发器定义CREATE DEFINER=`root`@`%` trigger t_test
--事件定义CREATE DEFINER=`root`@`%` EVENT `e_test`
DEFINER:对象定义者,在创建对象时可以手动指定用户,不指定的话默认为当前连接用户;
SQL SECURITY:指明以谁的权限来执行该对象,有两个选项,一个为 DEFINER,一个为 INVOKER,默认情况下系统指定为 DEFINER;DEFINER:表示按定义者的权限来执行; INVOKER:表示按调用者的权限来执行。
如果导入账号具有 SUPER 权限,即使对象的所有者账号不存在,也可以导入成功,但是在查询对象时,如果对象的 SQL SECURITY 为 DEFINER,则会报账号不存在的报错。ERROR 1449 (HY000): The user specified as a definer ('root'@'%') does not exist
改写好处:1. 可以避免还原时遇到 DEFINER 报错相关问题;2. 根据输出信息知道备份是否正常进行,防止备份中遇到元数据锁无法获取然后一直卡住的情况。
mysql数据库不小心还原了怎么办
mysql数据库不小心还原了需要按照以下步骤恢复。
1、先确认MYSQL有没有启用bin日志 ,就是看下mysql.ini(my.cnf)里的log-bin=mysql-bin, 可以 自定义一个目录和前缀名,比如/data/log/mylog这样。
2、然后在数据库文件存放的data目录就能看到mysql-bin.00000x这样的文件,这就是二进制日志了,可以导出成txt格式的,里面其实就是对数据库的各种操作SQL语句。
3、导出txt文件:
E:\wamp\bin\mysql\mysql5.6.12\binmysqlbinlog --database=testdatabase E:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin.000312 C:\\test1.txt
这是WINDOWS下的导出,linux也是类似的。
database=数据库名
从最早的日志还始还原
linux下可以很方便的 mysql-bin.000*
可以加参数开始时间和结束时间,就是你执行那条SQL语句的时间
start-datetime="2014-12-04 11:25:56" --stop-datetime="2014-12-04 13:23:50"
4、恢复数据:
E:\wamp\bin\mysql\mysql5.6.12\binmysqlbinlog --database=yundongchao E:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin.000179 | mysql -u root -p
------------------------------------------------
MySQL复制data目录中的数据库文件后原来的表都成了视图,如何恢复?
*.frm是描述了表的结构,*.MYD保存了表的数据记录,*.MYI则是表的索引
每个数据库都会在data目录下生成一个文件夹。
查看数据库记录可以直接从mysql命令控制台查看。建议使用mysql-front或者phpmyadmin来进行日常的数据库操作。
从命令控制台,你可以这样
use 数据库名
select * from 表明
根据需要用mysql语句查询记录
文章标题:mysql视图怎么还原,mysql 还原
标题URL:http://cdiso.cn/article/hegsos.html