linux中mysql命令方式备份数据的问题的详解

黄舟
发布: 2017-03-03 14:30:05
原创
1458 人浏览过

这几天公司新出了个组件化的项目,里面需要用到mysql数据库相关的技术,由于之前一直用的mongodb,所以mysql几乎忘光了,于是只能在linux虚拟机中重新开始学习。

基本的增删改查还好,但是在数据备份的上遇到了一些问题,好在一番尝试之后终于成功。

Mysql的api以及网上说的备份命令是:mysqldump  -uroot –p 要备份的数据库名> 目标路径/目标文件名.sql,于是我就照着敲了一遍,但是结果报了一个2002的异常(补充:一开始用这个命令的时候是提示找不到mysqldump的,后来用了软连接ln把mysqldump命令实际地址连接到usr/bin):

mysqldump:Got error: 2002: Can't connect to local MySQL server through socket'/tmp/mysql.sock' (2) when trying to connect,
如图1:
登录后复制

 

于是查了资料以后,我又进行了一些修改,如图2:


但是呢,这时候2002是没有了,取而代之的却是有出现了1045错误:mysqldump: Got error: 1045: Access denied for user 'root'@'localhost'(using password: YES) when trying to connect,如图3:


估摸着这意思应该是说root用户和localhost权限方面有问题,因为我记得我在设置mysql远程访问的时候把host都设置成了%,如图4:




于是又在网上搜索了一下之后,又找到了另一个备份方面的命令,尝试之后发现可行,如图5:


至此,已经在linux虚拟机中成功备份mysql数据库,但是这个命令未免就太长了,再想到mysql的api说的应该总不会错吧,于是便想着优化一下。

那么,既然1045出现的错误我已经大概能猜到是用户权限的问题,于是便从这里下手,没有root的localhost,那就加上吧。进入数据库,使用mysql,如图4,然后添加用户,如图6:


再次查看user表,可以发现成功添加,如图7:


那么备份的命令便可以变成优化之后的了,如图8:


显而易见,命令变短了,只是依旧还不够短,于是再次查找资料后找到了一个解决办法,需要把mysql.sock的实际指向地址给链接到2002错误中的地址,我的修改如图9:


那么最后,大概就是见证奇迹的时刻了吧,该验证api上的说法了:输命令,回车,再次成功备份,至此算是大功告成了,如图10:


总结一下,备份的话这里可以细分为三种命令方式,只是勉强弄懂了的话就知道其实还是一种而已。  

 以上就是linux中mysql命令方式备份数据的问题的详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!