MySQL无需SQL文件复制数据库的命令及1045权限报错求助
无需SQL文件直接复制MySQL数据库的方法及1045权限错误解决
一、无SQL文件复制的可行命令
完全可以通过管道命令跳过中间SQL文件,直接完成数据库复制,基础命令格式如下:
mysqldump -u [用户名] -p[密码] [原数据库名] | mysql -u [用户名] -p[密码] [新数据库名]
⚠️ 注意:-p和密码之间不能加空格,否则系统会将密码识别为独立参数,引发输入异常。
二、1045权限错误的解决方法
你遇到的权限拒绝问题,即使切换系统root也无效,大概率是以下原因导致:
密码输入逻辑错误
使用-p但不直接跟密码时,命令会要求你输入两次密码(分别给mysqldump和mysql),极易输错。直接在-p后紧跟密码(无空格)可避免该问题,示例:mysqldump -u root -pYourRootPassword lakha | mysql -u root -pYourRootPassword testDB请将
YourRootPassword替换为你的实际MySQL root密码。MySQL root用户认证方式不兼容
MySQL 8.0+版本默认给root用户使用caching_sha2_password认证,部分版本的mysqldump存在兼容性问题。可修改认证方式为mysql_native_password:- 先登录MySQL:
mysql -u root -p - 执行修改命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourRootPassword'; FLUSH PRIVILEGES; - 退出后重新执行复制命令。
- 先登录MySQL:
数据库权限不足
确认MySQL root用户对原数据库lakha拥有SELECT、LOCK TABLES权限,对目标数据库testDB拥有CREATE、INSERT权限。登录MySQL后执行以下命令查看权限:SHOW GRANTS FOR 'root'@'localhost';若权限不足,补充授权:
GRANT ALL PRIVILEGES ON lakha.* TO 'root'@'localhost'; GRANT ALL PRIVILEGES ON testDB.* TO 'root'@'localhost'; FLUSH PRIVILEGES;系统root与MySQL root的区别
用sudo -s切换的是系统root用户,和MySQL的root用户权限完全独立,切换系统root不代表自动获得MySQL的管理权限,执行命令时仍需正确指定MySQL的用户名和密码。
三、额外注意事项
- 确保目标数据库
testDB已提前创建,可执行以下命令预创建:mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS testDB;" - 若数据库数据量较大,建议添加
--single-transaction参数避免锁表:mysqldump -u root -pYourRootPassword --single-transaction lakha | mysql -u root -pYourRootPassword testDB
内容的提问来源于stack exchange,提问作者LAKHENDRA KUSHWAH
相关产品推荐
相关产品推荐

