将MySQL用户从一台数据库服务器移到另一台服务

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

我有一个与Appr的MySQL服务器。 里面有6000个MySQL用户。 我现在在不同的物理服务器上build立一个更好的MySQL服务器,并且需要将这6000个MySQL用户从旧服务器转移到新服务器。 我怎样才能做到这一点?

重要的是,权限和密码不应该改变。

转储mysql.user表(以及可选的mysql.db表),然后用新主机的名称replace旧主机名称的任何特定引用。 导入新的主机数据库并刷新权限。

这不难吗?

请记住,主要版本中的mysql.user是不同的。

select count(1) from information_schema.columns where table_schema='mysql' and table_name='user'; 

这个查询返回

  • 37为MySQL 5.0
  • 39为MySQL 5.1
  • 42为MySQL 5.5。
  • 你不能在MySQL 4.x中运行这个查询,但运行desc mysql.user ,你会看到31列。

实际上有两种方法可以安全地将用户从一个数据库移植到另一个数据库,而不pipeMySQL的版本如何。

scheme1 :使用mk-show-grants (很快被称为来自Percona Toolkit的pt-show-grants)

这将所有MySQL Grants作为SQL语句转储出来,这些语句可以完全移植到任何MySQL 5.x实例中。

选项2 :运行这些命令(我个人模拟mk-show-grants的function)

 mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql 

任何一个选项产生的MySQLUserGrants.sql都可以被简单地执行,并且授权表被适当的填充。

如果你愿意的话,你可以用phpMyAdmin做一下symcbean的解释。 进入导出选项卡,并select导出mysql数据库(如果你想保持权限, user表和AND db表)。