我正在使用mysql workbench,它在linux下有mysqldbcopy
命令。当我尝试使用它时,我必须提供一个连接字符串(参见示例here)。
我的密码包含&符号(&),因此我调用mysqldbcopy
如下(对于字符转义建议)
mysqldbcopy \
--source "root:&1qqq34rtyy@localhost:3310:/var/run/mysqld/mysqld.sock" \
--destination "root:&1qqq34rtyy@localhost:3310:/var/run/mysqld/mysqld.sock" \
old:new
但我收到以下错误,通过谷歌搜索,我发现这意味着我没有提供正确的密码(如果我错了,请纠正我)
# Source on localhost: ... ERROR: Cannot connect to the Source server.
Error 1045: Access denied for user 'root'@'localhost' (using password: NO)
请问有人可以解释问题出在哪里?
是的,我确信密码是正确的,已经从.my.cnf
复制了,我可以在mysql
命令下使用
答案 0 :(得分:2)
mysqldbcopy
--source=root':&1qqq34rtyy'@localhost:3310:/var/run/mysqld/mysqld.sock
--destination=root':&1qqq34rtyy'@localhost:3310:/var/run/mysqld/mysqld.sock
old:new --force
我也面临同样的问题,
上述语法顺利执行,没有任何错误。
如果目标数据库名称已存在,则使用--force
&需要强制覆盖。
答案 1 :(得分:1)
通过查看您提供的链接,我可以得出结论 -
您正在使用 -
mysqldbcopy \
--source "root:&1qqq34rtyy@localhost:3310:/var/run/mysqld/mysqld.sock" \
--destination "root:&1qqq34rtyy@localhost:3310:/var/run/mysqld/mysqld.sock" \
old:new
但链接显示,
mysqldbcopy \
--source=root:pass@localhost:3310:/test123/mysql.sock \
--destination=root:pass@localhost:3310:/test123/mysql.sock \
util_test:util_test_copy
结论,
在--source
和--destination
之后,您提供的链接中的示例包含' =' 。
如果双引号没有帮助,请尝试使用单引号。
验证端口3310是否正确。默认我猜你安装时是3306.你能确认吗?