使用命令行复制mysql数据库

时间:2012-07-10 19:35:59

标签: mysql database permissions terminal

我想使用命令行复制一个名为db1的mysql数据库。在这样做时,我想从db1获取所有表格和字段,但不是它的值。

我在这个主题上看过很多SO Q& A.例如,Copy/duplicate database without using mysqldump。 不幸的是,我无法完成此链接中建议的两步流程:

  1. 创建数据库
  2. mysqldump从db1到db2
  3. 这是我的代码从bash终端开始:

    ubuntu@ip-xx-xxx-xxx-xx:~$ sudo -i
    root@ip-xx-xxx-xxx-xx:~# mysql -h mysite.com -u timpeterson -p
    Enter password: 
    mysql> create database `db2`;
    ERROR 1044 (42000): Access denied for user 'timpeterson'@'%' to database 'db2'
    

    值得注意的是,只要输入db2我没有成为root,我就可以创建sudo i。不幸的是,如果我没有成为root用户,我无法弄清楚如何远程访问db2这是我最终需要做的事情。也就是说,我不知道如何从我的网络应用db2访问mysite.com

2 个答案:

答案 0 :(得分:3)

当然,您需要使用具有CREATing数据库权限的登录名。

来自mysql管理员帐户(通常是root或mysqladm [in]),

CREATE DATABASE db2;
-- instead of ALL PRIVILEGES, see what privileges you really need for the application
GRANT ALL PRIVILEGES ON db2.* TO 'timpeterson'@'%' IDENTIFIED BY 'timspassword';
FLUSH PRIVILEGES;

然后从命令行

mysqldump --opt --no-data db1 --user=USERWITHACCESSTODB1 --password | mysql db2 --user=timpeterson --password

FLUSH PRIVILEGES特别棘手 - 在某些安装中,权限不会自动重新加载,因此您可能会发现自己正在向用户授予Clark Kent的超级粉丝,而该用户仍然无法做到任何东西。

答案 1 :(得分:1)

看起来您的第一个问题可能是权限问题。尝试以root身份登录MySQL控制台并执行GRANT ALL PRIVILEGES ON db2.* TO 'timpeterson'@'%';。然后再试一次。