您的位置:首页 > 数据库 > MySQL

一次个人mysql数据库导出导入遇到的问题

2018-03-21 14:38 211 查看
个人博客好久不访问了,最近整理一个微信小程序想访问博客的一些数据,突然发现mysql数据挂掉了,重新启动后没有过多久就又挂掉了,懒得检查原因,打算直接导出一份数据重新初始化数据库,没想到过程还挺坎坷,花了一个多小时,这里记录一下过程,方便其他同学遇到类似的情况参考:

第一步备份数据库:mysqldump -uroot -p --default-character-set=utf8 --databases xxx > xxx20180321.sql
这一步比较顺利,一次成功,直接生成了备份文件
第二步初始化数据库:/data/mysql/bin/mysqld --defaults-file=/data/mysql/my.cnf --initialize --basedir=/data/mysql --datadir=/data/mysql/data --user=mysql &
            注意,执行这一步之前先要停止数据库,并且把%mysql%/data目录和log目录以及tmp目录内的数据文件全部清空。
第三步修改密码,在上一步执行过程的日志查询初始化密码,如下面所示,mysql会初始化一个密码,使用这个密码登录:mysql -uroot -pyTjgtY<j<0CT,然后修改root密码或创建自己的账户,修改密码: grant all on *.* to root@'192.168.0.1' identified by '123456';
  [Note] A temporary password is generated for root@localhost: yTjgtY<j<0CT
第四步导入备份的数据文件:mysql -uroot -p --default-character-set=utf8 < xue20180321.sql
        这一步比较纠结,出现了多次问题,首先提示:Access denied for user 'root'@'localhost' (using password: YES),分析是user表中的的root用户的host设置的是ip,不是localhost,所以加了-h参数,即mysql -uroot -h192.168.0.1 -p --default-character-set=utf8 < xue20180321.sql,结果还是不行,提示hostname异常什么的,所以打算直接update user,把host改成%。
        mysql>update user set host='%' where user='root';

        之后导入备份文件,一次成功。

    附:如果找不到日志中的初始化密码,可以让mysql开启免密码模式:skip-grant-tables,开启免密码模式有两种方式

方式一:修改my.conf配置文件,增加skip-grant-tables参数,重启mysql,执行mysql -uroot -p输入密码时直接回车进入mysql命令行,注意这种方式当操作完成后需要重新恢复my.conf配置文件
方式二:直接在mysql的启动命令中增加--skip-grant-tables参数,注意这里有俩个“-”
/data/mysql/bin/mysqld --defaults-file=/data/mysql/my.cnf --skip-grant-tables --basedir=/data/mysql --datadir=/data/mysql/data --user=mysql 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: