如何将 MySQL 用户表从一台服务器复制到另一台服务器?

如何将 MySQL 用户表从一台服务器复制到另一台服务器?

我正在设置一个新的 MySQL 服务器,并且我想给它提供与现有服务器(即将消失)相同的一组用户名、允许的主机和密码。

只需转储用户表然后将其加载到新服务器上就可以了吗?

还有比这更好的方法吗?

答案1

oldserver$ mysqldump mysql > mysql.sql
newserver$ mysql mysql < mysql.sql
newserver$ mysql 'flush privileges;'

应该这样做,记得按要求-u $USER添加-p$PASSWORD

答案2

我会看看Percona 工具包。该工具的描述pt-show-grants说明了一切...

pt-show-grants提取、排序,然后打印 MySQL 用户帐户的授权。

你为什么想要这个?有几个原因。

首先是可以轻松地将用户从一台服务器复制到另一台服务器;您可以简单地从第一台服务器提取授权,然后将输出直接传送到另一台服务器。

第二个用途是将您的授权放入版本控制中......

答案3

虽然转储mysql数据库可能会有用,但根据我的经验,正确记录所有访问并使用语句重新设置GRANT要好得多。这样做有两个好处:

  1. 您将了解您的数据库安全性及其实现方式。
  2. 您将删除不再需要的访问权限。

答案4

mysqldump 可以工作,但是由于 mysql 数据库使用 ISAM,因此您只需将目录复制到新服务器即可。您会在不同的地方找到它,但 mysql 数据库的最常见位置是 /var/lib/mysql/mysql。请确保在新服务器上停止 mysql,将旧目录移开,复制目录并重新启动。使用标准位置作为 root 的示例:

# /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

相关内容