我想使用命令行复制一个名为db1
的mysql数据库。在这样做时,我想从db1
获取所有表格和字段,但不是它的值。
我在这个主题上看过很多SO Q& A.例如,Copy/duplicate database without using mysqldump。 不幸的是,我无法完成此链接中建议的两步流程:
这是我的代码从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
。
答案 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'@'%';
。然后再试一次。