首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

故障分析 | 更新用户信息导致 MySQL 从库复制异常

1背景描述 客户在创建 MySQL 用户时不慎填写了错误的 host 信息,随后其针对主库的 mysql.user 实施了数据更新操作(调整了该用户的 host 值)。...于是我们对两个数据库的 mysql.user 表进行检查并发现: MySQL 8.0.34 与 MySQL 8.0.13 对 mysql.user 表中的 host 字段定义确实存在差异!...,分别为 DEFINER 和 INVOKER ,下面我们分别介绍其各自值的作用: DEFINER 表示当某用户对该存储过程有 EXECUTE 权限,在调用时,我们判断的是 该存储过程创建者 是否有 EXECUTE...对于触发器,视图由于 mysql 库中没存储,而 information_schema 库为特殊的内存临时数据库,无法做 DDL 操作,虽然 MySQL 提供了 ALTER VIEW 语法(实际就是对其做重建处理...,TABLE_NAME," as ",VIEW_DEFINITION,";" ) from information_schema.VIEWS where definer='root@localhost

6210

Mysql The user specified as a definer (test@%) does not exist

子句指定为INVOKER,那么MySQL将使用当前调用存储过程的用户执行此过程,并验证用户是否具有存储过程的execute权限和存储过程引用的相关对象的权限; (4)如果不显示的指定SQL SECURITY...command denied to user 'user1'@'localhost' for table 'user' 发现系统报错查询不到了,这是因为我们在上述定义的SQL SECURITY值为INVOKER...由于前期在测试库上开发的缘故,我们经常定义到的definer为`root`@`%`,后来搬移到生产库上又得改回来,存在着大量的更新,上百个的视图,函数等一个个改不免太麻烦并且也可能遗漏。...from information_schema.VIEWS; select concat("alter DEFINER=`user`@`localhost` SQL SECURITY DEFINER...,TABLE_NAME," as ",VIEW_DEFINITION,";") from information_schema.VIEWS where DEFINER'user@localhost'

2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL之视图简介

    MySQL中的视图 MySQL之视图 在MySQL数据库中,视图view是一个命名的虚表,之所以称之为虚表,是因为它可以当成一个表使用,它是由一个SQL查询来定义,但是却不占用物理存储。...option就是用于可更新的视图的,它用来确认更新的值是否需要检查,为了解释这个参数,我们来看一个例子: mysql> use test Database changed mysql> create...show tables命令,想必所有的MySQL DBA都不陌生,这个命令会显示数据库下面的所有表,当我们定义了一个视图的时候,同样会把视图显示出来,如同上面的例子中的v_t一样: mysql> show...,包括视图的定义者、视图内容、是否可更新、字符集等,如下: mysql> select * from information_schema.views where table_schema=database...,基本表数据发生了改变,视图也会跟着改变,一起来看下面的例子,当我们在上述t表中插入相应的数据的时候,来查看v_t视图是否会发生相应的变化: mysql> insert into t values (10

    47010

    Mysql概念--视图

    通过视图,可以展现基表的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。...WITH [CASCADED | LOCAL] CHECK OPTION]:表示视图在更新时保证在视图的权限范围之内 cascade是默认值,表示更新视图的时候,要满足视图和表的相关条件 local...注意:显示指定视图列名,要求视图名后面的列的数量必须匹配select子句中的列的数量。...,就可以像一个普通表那样使用,视图主要用来查询 mysql> select * from view_name; 3、有关视图的信息记录在information_schema数据库中的views表中 mysql...:将视图的结果存入临时表,然后使用临时表执行语句 缺省ALGORITHM选项等同于ALGORITHM = UNDEFINED 2、DEFINER选项:指出谁是视图的创建者或定义者   ①definer=

    4.1K20

    SQL定义和使用视图

    VIEWDEFINITION属性(SqlFieldName = VIEW_DEFINITION)以字符串形式返回当前名称空间中所有视图的视图字段名称和视图查询表达式。...例如,SELECT View_Definition FROM INFORMATION_SCHEMA.VIEWS返回诸如“(vName,vAge)SELECT Name,Age FROM Sample.Person...以下示例返回当前名称空间中所有视图的视图名称(Table_Name字段)和所有者名称:SELECT Table_Name,Owner FROM INFORMATION_SCHEMA.VIEWS以下示例返回当前名称空间中所有非系统视图的所有信息...视图的“目录详细信息”包括每个视图字段的定义(数据类型,最大长度,最小值/最大值等),以及INFORMATION.SCHEMA视图类未提供的详细信息。...“目录详细信息”视图信息显示还提供了用于编辑视图定义的选项。列出视图依赖INFORMATION.SCHEMA.VIEWTABLEUSAGE持久类显示当前名称空间中的所有视图及其依赖的表。

    1.8K10

    【DB笔试面试539】在Oracle中,数据字典分为哪几类?

    例如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。 Oracle数据字典可以包括四个层次,分别为X$内部表、基础数据字典表、数据字典视图和动态性能视图。...v$动态视图主要是针对SGA和数据库实例进程的显示。在这个过程中,Oracle使用了DMA(Direct Memory Access)技术,可以高效的获取这些分析数据。...V$FIXED_TABLE可以查询数据库中所有底层的表。V$FIXED_TABLE视图显示数据库中所有动态性能表、视图和导出表。由于某些V$表(例如V$ROLLNAME)涉及底层的表,因此,没有列出。...DBA_SEQUENCES(SEQ) 所有用户(当前用户)序列信息 V$DATAFILE 记录来自控制文件的数据文件信息 DBA_CONSTRAINTS 用户的表的约束信息 V$FILESTAT 记录数据文件读写的基本信息...V$SESSION 显示当前会话信息 V$SORT_USAGE 显示临时段的大小及会活、可以看出哪些进程硬盘排序 V$FIXED_TABLE 列出当前发行的固定对象的说明 V$SQLAREA 列出共享区的

    1.2K30

    MySQL之视图

    数据库授权命令可以让每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定的行,列上; 逻辑数据独立性:视图可帮助用户屏蔽真实表结构变化带来的影响。 视图和表的区别以及联系是什么?...两者的联系: 视图是在基本表之上建立的表,它的结构和内容都来自于基本表,它依赖基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本的抽象和逻辑意义上建立的关系。...表,来查看所有的视图 mysql> select * from information_schema.views where table_schema='test1'\G #where后面指定的是一个库名...1)update指令更新 #查看表以及视图的数据,其中quantity对应视图的abc字段 mysql> select * from t; +----------+-------+ | quantity...mysql> insert into t values(3,5); Query OK, 1 row affected (0.00 sec) #查看视图的数据 mysql> select * from

    1.7K10

    MySQLMariaDB表表达式(3):视图「建议收藏」

    但在MySQL/MairaDB中的视图定义语句中允许使用order by(又是违反标准的行为)。它认为视图中的order by会在引用视图时直接作用于基表。...视图的算法会影响MySQL/MariaDB处理视图的方式: merge会将引用视图的语句与视图定义语句合并起来,使得视图定义的某一部分取代语句的对应部分。...undefined是让MySQL/MariaDB自己选择merge还是temptable,它更倾向于merge。这是未指定algorithm时的默认值。...MySQL/MariaDB中不存在show view status语句。可以使用show table status表和视图的状态信息,使用show tables显示出数据库中的表和视图。...如下: select * from information_schema.views where table_name='view_name'; 5.检查无效视图 在创建视图的时候,要求它的基表已存在,

    1.2K20

    Server层表级别对象字典表 | 全方位认识 information_schema

    TABLE_NAME:表示视图名称 VIEW_DEFINITION:表示视图的定义语句SQL文本,注意,该文本经过了内部转换,并不是原始的定义语句,该列显示的内容与使用SHOW CREATE VIEW...语句查看到的视图定义语句信息大部分相同(小部分不同的是,information_schema.views表中会自动去掉例如"WITH CHECK OPTION"的关键字,而show create view...:在创建视图时,MySQL会为视图设置一个是否可更新的标记,如果视图可执行DML语句(以及类似的操作),则该字段值为YES,否则为NO。...分配算法可以减少分配操作的次数 对于NDB表,此语句的输出显示AVG_ROW_LENGTH和DATA_LENGTH列的确切值,但不包括BLOB列 对于视图,SHOW TABLE STATUS显示的所有字段都为...列) ROUTINE_COMMENT:存储程序的注释信息(该字段为 "MySQL extension" 列) DEFINER:存储程序的创建者账户名(该字段为 "MySQL extension" 列)

    1.1K20

    MariaDB 视图与触发器

    数据库中的视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的行和列数据,行和列数据来自由定义视图查询所引用的表,并且在引用视图时动态生成,视图是从一个或者多个表中导出的,视图的行为与表非常相似,...MySQL的一段程序,触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATAE和DELETE语句.如果定义了触发程序,当数据库执行这些语句的时候就会激发触发器执行相应的操作,触发程序是与表有关的命名数据库对象...,创建视图的信息来自表的部分信息,只取出需要的信息,这样既能满足需求也不破坏原有的表结构.视图的作用:视图不仅可以简化用户对于数据的理解,也可以简化他们的操作,那些被经常使用的查询可以定义为视图,从而使得用户不必为以后的操作每次指定全部条件....通过视图用户只能查询和修改他们所能见到的数据,数据库中的其他数据则既看不见也取不到,数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上.通过视图,...,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用,触发器可以查询其他表,而且可以包含复杂的

    1.3K10

    【重学 MySQL】七十二、轻松掌握视图的创建与高效查看技巧

    【重学 MySQL】七十二、轻松掌握视图的创建与高效查看技巧 在MySQL数据库中,视图(View)是一种虚拟表,它基于一个或多个表的数据计算生成结果集,但不存储实际的数据。...通过信息架构(Information Schema)查看视图 MySQL的信息架构(Information Schema)是一个虚拟数据库,它提供了关于MySQL服务器、数据库、表、列等元数据的详细信息...例如,查看当前数据库中所有视图的名称: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'your_database_name...注意事项 视图的可更新性 虽然视图在逻辑上看起来像一张表,但它并不存储数据。因此,视图中的数据是依赖于真实表中的数据的。当真实表中的数据发生改变时,显示在视图中的数据也会发生改变。...然而,并不是所有的视图都是可更新的。视图的可更新性取决于视图的定义和所使用的MySQL版本。

    24210

    《MySQL核心知识》第11章:视图

    大家好,我是冰河~~ 今天是《MySQL核心知识》专栏的第11章,今天为大家系统的讲讲MySQL中的视图,希望通过本章节的学习,小伙伴们能够举一反三,彻底掌握MySQL中的视图知识。...ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。 如果没有ALGORITHM子句,「默认算法是UNDEFINED(未定义的)」。算法会影响MySQL处理视图的方式。...视图的数据来自于两个表 CREATE TABLE student (stuno INT ,stuname NVARCHAR(60)) CREATE TABLE stuinfo (stuno INT ,class...CREATE VIEW DESCRIBE查看视图基本信息 DESCRIBE 视图名 DESCRIBE stu_class 结果显示了视图的字段定义、字段的数据类型、是否为空、是否为主/外键、默认值和额外信息...`stuno`) utf8 utf8_general_ci 执行结果显示视图的名称、创建视图的语句等信息 在VIEWS表中查看视图的详细信息 在MYSQL中,INFORMATION_SCHEMA

    40020

    数据库MySQL-视图

    1.4 视图 1.4.1 概述 1、视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上 2、视图中并不存放数据,而是存放在视图所引用的原始表(基表)中...; -- 显示所有的表和视图 -- 方法二:精确查找视图(视图信息存储在information_schema下的views表中) mysql> select table_name from information_schema.views...属性查询视图 mysql> show table status\G; -- 查询所有表和视图的详细状态信息 mysql> show table status where comment='view'\...G -- 只查找视图信息 查询视图的结构 mysql> desc view1; 查询创建视图的语法 mysql> show create view view1\G 1.4.7 视图算法 场景:找出语文成绩最高的男生和女生...视图的算法有: 1、merge:合并算法(将视图语句和外层语句合并后再执行) 2、temptable:临时表算法(将视图作为一个临时表来执行) 3、undefined:未定义算法(用哪种算法有MySQL

    1.4K00

    MySQL 之高级命令(精简笔记)

    《MySQL5.7从入门到精通》 - 刘增杰 创建索引 索引用于快速找出在某个列中有一特定值的行,如果不使用索引MySQL必须从第l条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多...使用CREATE TABLE创建表时,除了可以定义列的数据类型,还可以定义主键约束、外键约束或者唯一性约束,而不论创建那种约束,在定义约束的同时相当于在指定列上创建了一个索引。...◆创建唯一索引◆ 创建唯一索引的主要原因是减少查询索引列操作的执行时间,尤其是对比较庞大的数据表.它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值.如果是组合索引,则列值的组合必须唯一...,name varchar(40)); create table info (s_id int,glass varchar(40),addr varchar(90)); 视图提供了一个很好的解决方法,创建视图的信息来自表的部分信息...通过视图用户只能查询和修改他们所能见到的数据,数据库中的其他数据则既看不见也取不到,数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上.通过视图,用户可以被限制在数据的不同子集上

    1.1K10

    第八章《视图》

    视图:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包括数据 作为一个select语句保存在数据字典中的 通过视图,可以展现基表的部分数据,属兔数据来自定义视图的查询中使用的表 使用视图动态生成...UNDEFINED:mysql自动选择算法 MERGE;合并,表示将视图设置的字段名称和select语句从表中获取的字段的内容合并 TEMPTABLE:临时表,表示将视图的结果存入临时表,然后用临时表来执行语句...做 查看视图详细的信息; (1)show create view 视图名\G 在mysql当中,视图的信息存储在information schema数据库下的views表中 select...* from information_schema.views\G; 修改视图; create or replace view 视图名 as select 。。。...视图属于局部模式的表,是虚表; (7)视图的建立和删除值影响视图本身,而不影响对应的基本表; 两者的联系: 试图使在基本表之上建立的表,他的结构和内容都来自于基本表,它依赖基本表存在而存在,一个视图可以对应一个基本表或多个

    48020
    领券