我有database1
(~500MB),可以user1
以只读模式访问。
我有空数据库database2
,具有user2
的完全权限。
现在,我想将database1
克隆到database2
。
我尝试了mysqldump
,但它说access denied
。
有更好的方法吗?感谢。
答案 0 :(得分:1)
默认情况下,mysqldump尝试在转储之前锁定所有表 - 以便创建一致的快照。我假设user1
没有权限这样做。
您可以在命令行上使用--single-transaction
或--skip-lock-tables
。第一个选项对整个操作使用单个事务。如果所有表都是事务性的并且数据库很小,则这非常有效。如果数据库很大,这会对其他应用程序产生严重影响。
如有疑问,请先尝试--skip-lock-tables
。但是,如果其他应用程序在转储期间进行了更改,则转储可能会不一致。
克隆数据库的完整示例:
mysqldump -h host1 -u user1 -ppass1 --single-transaction database1 |
mysql -h host2 -u user2 -ppass2 database2