Agvorth Asked: 2009-07-07 13:54:40 +0800 CST2009-07-07 13:54:40 +0800 CST 2009-07-07 13:54:40 +0800 CST 如何将 MySQL 用户表从一台服务器复制到另一台服务器?[复制] 772 我正在设置一个新的 MySQL 服务器,我想为它提供与现有服务器(即将消失)相同的用户名、允许的主机和密码。 只转储用户表然后将其加载到新服务器上是否可行? 还有比这更好的方法吗? mysql user-permissions user-accounts export 5 个回答 Voted Best Answer Dave Cheney 2009-07-07T14:10:35+08:002009-07-07T14:10:35+08:00 oldserver$ mysqldump mysql > mysql.sql newserver$ mysql mysql < mysql.sql newserver$ mysql 'flush privileges;' 应该这样做,记得根据需要添加-u $USER和-p$PASSWORD Aaron Bush 2009-07-09T18:07:30+08:002009-07-09T18:07:30+08:00 我会看看Percona Toolkit。该pt-show-grants工具的描述说明了一切...... pt-show-grants提取、订购,然后打印 MySQL 用户帐户的授权。 你为什么要这个?有几个原因。 第一个是轻松地将用户从一台服务器复制到另一台服务器;您可以简单地从第一台服务器提取授权并将输出直接通过管道传输到另一台服务器。 第二个用途是将您的授权放入版本控制中...... staticsan 2009-07-07T15:03:33+08:002009-07-07T15:03:33+08:00 虽然mysql数据库的转储可能会起作用,但根据我的经验,正确记录所有访问并使用语句再次设置它GRANT要好得多。这样做有两个好处: 您将了解您的数据库安全性以及它是如何实现的。 您将删除不再需要的访问权限。 abu 2015-01-18T10:10:05+08:002015-01-18T10:10:05+08:00 如果您要迁移到新的服务器版本,则接受的答案(使用 mysqldump 备份 mysql.user 表)是一种非常危险的方法。 我过去是这样做的(将用户从 Mysql 4 迁移到 Mysql 5.1),后来我在尝试向我的数据库用户授予或修改权限时遇到了问题。 发生这种情况是因为 mysql.users 表结构在 mysql 服务器版本之间有所不同,如下所述: https://dba.stackexchange.com/a/16441/18472 因此,如果要升级服务器版本,请小心。这里还有一些提示: https://stackoverflow.com/a/13218162/710788 Tim 2009-07-08T10:55:38+08:002009-07-08T10:55:38+08:00 mysqldump 可以,但由于 mysql 数据库使用 ISAM,您只需将目录复制到新服务器即可。您会在不同的地方找到它,但 mysql 数据库最常见的位置是 /var/lib/mysql/mysql。一定要在新服务器上停止mysql,把旧目录移开,复制目录并重启。使用标准位置作为根的示例: # /etc/init.d/mysqld stop # cd /var/lib/mysql # mv mysql ../mysql.backup # rsync -a root@oldserver:/var/lib/mysql/mysql . # /etc/init.d/mysql start
应该这样做,记得根据需要添加
-u $USER
和-p$PASSWORD
我会看看Percona Toolkit。该
pt-show-grants
工具的描述说明了一切......虽然
mysql
数据库的转储可能会起作用,但根据我的经验,正确记录所有访问并使用语句再次设置它GRANT
要好得多。这样做有两个好处:如果您要迁移到新的服务器版本,则接受的答案(使用 mysqldump 备份 mysql.user 表)是一种非常危险的方法。
我过去是这样做的(将用户从 Mysql 4 迁移到 Mysql 5.1),后来我在尝试向我的数据库用户授予或修改权限时遇到了问题。
发生这种情况是因为 mysql.users 表结构在 mysql 服务器版本之间有所不同,如下所述:
https://dba.stackexchange.com/a/16441/18472
因此,如果要升级服务器版本,请小心。这里还有一些提示:
https://stackoverflow.com/a/13218162/710788
mysqldump 可以,但由于 mysql 数据库使用 ISAM,您只需将目录复制到新服务器即可。您会在不同的地方找到它,但 mysql 数据库最常见的位置是 /var/lib/mysql/mysql。一定要在新服务器上停止mysql,把旧目录移开,复制目录并重启。使用标准位置作为根的示例: