问题:MySQL db 从服务器 (A) 迁移到服务器 (B),哪些表?

问题:MySQL db 从服务器 (A) 迁移到服务器 (B),哪些表?

将 MySQL 数据库从服务器 (A) 迁移到服务器 (B) 时,应转储哪些表并将其迁移到服务器 (B),包括用户授权?我不想手动重新输入用户帐户和密码。我希望使用第三方应用程序来执行此操作,例如Navicat,无需使用 mysqldump。我的理解是下表包含用户帐户(授予)数据:

mysql > 数据库
mysql > 用户

然而,我读到mysql表不需要从服务器(A)迁移到服务器(B),信息方案表。但是,如果 mysql 表不需要迁移,除非该注释不正确,否则我该如何迁移我的用户授权信息以及主机、用户名、密码等?

答案1

#!/bin/bash
# adapted from (http://www.pyrosoft.co.uk/blog/2006/10/18/show-grants-for-all-users-on-mysql/)
 ( mysql -pPASSWORD --batch --skip-column-names -e "SELECT user, host FROM user" mysql 
 ) | while read user host
    do
        echo "# $user @ $host"
        mysql -pPASSWORD --batch --skip-column-names -e"SHOW GRANTS FOR '$user'@'$host'"
    done

此脚本将“转储”所有用户权限及其哈希密码。我导入 mysql 和 information_schema 数据库的转储后得到了不同的结果。

答案2

我只需对数据库进行 mysqldump,然后手动镜像数据库用户的权限。这比试图找出导出用户访问权限和密码的方法(假设可行且可靠)更直接、更容易。

答案3

您需要迁移数据库,而不仅仅是表。您收到的信息有些不正确,因为 mysql 数据库才是您需要迁移的数据库。它包含所有安全信息,无需手动重建数据。但是,information_schema 是一个虚拟数据库,每次启动 MySQL 时都会创建它,因此没有必要为此烦恼。

我建议您使用 mysqldump 而不是 Navicat,因为 Navicat 不可靠并且有时会产生一些非常奇怪和不完整的结果,而 mysqldump 是专门为这项工作设计的。

相关内容