Mysql | 数据库迁移并修改 Mysql 的视图 DEFINER

一、数据库迁移

1、导出源数据

  在 mysql/bin 目录下,利用 mysqldump 命令执行导出数据到指定文件

./mysqldump -uroot -p stringdb > /opt/stringdb20200805.txt

Mysql | 数据库迁移并修改 Mysql 的视图 DEFINER_第1张图片

2、导入到目标数据库
2.1 新建目标数据库

Mysql | 数据库迁移并修改 Mysql 的视图 DEFINER_第2张图片

2.2 将数据文件放入目标主机

在这里插入图片描述

2.3 将源数据导入到目标数据库
mysql -u root -p stringdb < /opt/software/stringdb20200805.txt
3、查看导入效果

二、修改 mysql 表及视图等所有者

1449 - The user specified as a definer (’ root’ @’%’) does not exist

Mysql | 数据库迁移并修改 Mysql 的视图 DEFINER_第3张图片

1、查询非 root@localhost 的视图,并形成sql
SELECT
	DEFINER
FROM
	information_schema.VIEWS;

SELECT
	concat(
		"alter DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW ",
		TABLE_SCHEMA,
		".",
		TABLE_NAME,
		" as ",
		VIEW_DEFINITION,
		";"
	)
FROM
	information_schema.VIEWS
WHERE
	DEFINER <> 'root@localhost';
2、复制sql,执行语句

Mysql | 数据库迁移并修改 Mysql 的视图 DEFINER_第4张图片
Mysql | 数据库迁移并修改 Mysql 的视图 DEFINER_第5张图片
Mysql | 数据库迁移并修改 Mysql 的视图 DEFINER_第6张图片

3. 查看结果,解决问题

Mysql | 数据库迁移并修改 Mysql 的视图 DEFINER_第7张图片

你可能感兴趣的:(Mysql)