我正在build立一个新的MySQL服务器,我想给它一组相同的用户名,允许主机和密码作为现有的服务器(这是消失)。
它会工作只是做一个用户表的转储,然后将其加载到新的服务器上?
有没有比这更好的方法?
oldserver$ mysqldump mysql > mysql.sql newserver$ mysql mysql < mysql.sql newserver$ mysql 'flush privileges;'
应该这样做,记得要添加-u $USER
和-p$PASSWORD
我会看看Percona Toolkit 。 pt-show-grants
工具的描述说明了这一切…
pt-show-grants
extract,orders,然后打印MySQL用户帐户的授权。你为什么要这个? 有几个原因。
首先是轻松地将用户从一台服务器复制到另一台服务器; 您可以简单地从第一台服务器提取授权,并将输出直接传送到另一台服务器。
第二个用途是把你的资助版本控制….
虽然mysql
数据库的转储可能会工作,根据我的经验,正确logging所有的访问,并用GRANT
语句再次设置它是好得多。 这样做有两个好处:
这已经在这里解决了如何从MySQL导出权限,然后导入到新的服务器?
如果您正在迁移到新的服务器版本,则接受的答案(使用mysqldump备份mysql.user表)是非常危险的方法。
我过去做过(将用户从Mysql 4迁移到Mysql 5.1),后来在尝试向数据库用户授予或修改权限时遇到了问题。
发生这种情况是因为mysql.users表结构在mysql服务器版本中不同,如下所述:
https://dba.stackexchange.com/a/16441/18472
所以,如果你升级你的服务器版本,请注意。 更多的提示在这里:
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
运行grant命令非常简单。 它像是
将database.table上的所有数据授予“user”@“host”,由“password”
所以
GRANT ALL在数据库。*到“jack”@“localhost”由“somepass”