mysql视图怎么还原,mysql 还原-成都创新互联网站建设

关于创新互联

多方位宣传企业产品与服务 突出企业形象

公司简介 公司的服务 荣誉资质 新闻动态 联系我们

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 还原
地址分享:http://kswsj.cn/article/hegsos.html

其他资讯