2

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

我看过很多关于这个主题的问答。例如,不使用 mysqldump 复制/复制数据库。不幸的是,我无法完成此链接中建议的两步过程:

  1. 创建数据库
  2. mysqldump 从 db1 到 db2

这是我从 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.

4

2 回答 2

3

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

从 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 的超能力授予用户,而该用户仍然无法执行任何操作。

于 2012-07-10T19:41:49.610 回答
1

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

于 2012-07-10T19:40:39.760 回答