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

个人博客好久不访问了,最近整理一个微信小程序想访问博客的一些数据,突然发现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
  [Note] A temporary password is generated for root@localhost: yTjgtY
  • 第四步导入备份的数据文件: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 

你可能感兴趣的:(mysql)