注:数据库用户名未知也适用

环境说明

数据库:mysql 5.7
服务器:
Ubuntu 20.04
Centos 7

寻找目标data数据

默认data数据保存位置

  1. /var/lib/mysql

image.png
非默认地址data路径查找

  1. find / -iname 'performance_schema' #performance_schema为data目录默认存在文件

data数据导出导入

mysql data数据导出

目标服务器操作:
打包加密压缩mysql数据库数据存储目录mysql(linux mysql数据默认存储在/var/lib/mysql目录下)

  1. mkdir mysql #在root下先创建一个mysql目录
  2. cp /var/lib/mysql/. /root/mysql #将data数据全部打包到创建的mysql目录中
  3. zip -r mysql.zip /root/mysql -P hgfiuewhriwughi #打包压缩

ffsend 传输mysql.zip文件

  1. ./ffsend upload mysql.zip

ffsend 接受mysql.zip文件

  1. ./ffsend download [url]

mysql data数据导入

unzip解压缩

  1. unzip mysql.zip

关闭本地数据库服务

  1. 关闭:
  2. service mysql stop # ubantu
  3. systemctl stop mysqld.service # centos
  4. 查看:
  5. service mysqld status # ubantu
  6. systemctl status mysqld # centos

删除本地/var/lib/mysql

  1. rm -rf /var/lib/mysql

复制或移动mysql到/var/lib下去替换原MySQL位置

  1. mv mysql /var/lib -i
  2. cp mysql /var/lib -r

然后尝试开启mysql服务,发现失败

  1. service mysql start # ubantu
  2. systemctl start mysqld.service # centos

image.png

初始化数据库

法一:卸载重新安装mysql(ubantu推荐)

卸载数据库

ubantu

参考:https://www.cnblogs.com/cure/p/14152596.html
1. 查看MySQL的依赖项

  1. dpkg --list|grep mysql
  1. 卸载 mysql-common
    1. sudo apt remove mysql-common
  2. 卸载 mysql-server
    1. sudo apt autoremove --purge mysql-server
  3. 清除残留数据
    1. dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P
  4. 再次查看MySQL的剩余依赖项(一般这时候就卸载干净了)
    1. dpkg --list|grep mysql
  5. 继续删除依赖项(如果步骤 5还有剩余依赖,则继续 6)
    1. sudo apt autoremove --purge mysql-apt-config
    卸载后查看/var/lib下面的MySQL相关数据文件并没有删除,且其下导过来的mysql目录数据也还在
    image.png

    centos7

    参考:https://blog.csdn.net/typa01_kk/article/details/49057073
    1. yum remove mysql mysql-server mysql-libs compat-mysql51
    2. rpm -qa | grep -i mysql # 查看mysql的包
    3. rpm -e 上一步mysql的包

    安装mysql数据库

    ubantu

    Ubuntu Mysql 安装卸载
    安装好后登录数据库,发现成功但是需要导入数据库的密码(到这一步也就成功将目标数据库本地还原了)
    image.png

    centos

    centos7 搭建mysql

    法二:复制特定文件到’data’目录(centos推荐)

    参考:
    https://blog.csdn.net/baidu_34831792/article/details/109044189
    https://blog.csdn.net/weixin_41530957/article/details/106981918?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4.pc_relevant_antiscan_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4.pc_relevant_antiscan_v2&utm_relevant_index=9

    centos

    关闭数据库服务
    1. systemctl stop mysqld.service
    删除本地五个指定文件然后再mv过去:
    1. ibdata1 # 共享表空间 ibdata1
    2. ib_logfile0 # 事务日志
    3. ib_logfile1 # 事务日志
    4. ib_buffer_pool # MySQL InnoDB缓冲池
    5. auto.cnf # MySQL启动时,会自动从auto.cnf 文件中获取server-uuid值,并将这个值存储在全局变量server_uuid中。如果这个值或者这个文件不存在,那么将会生成一个新的uuid值,并将这个值保存在auto.cnf文件中。
    6. 注:若是ubantu采用此方法还应该覆盖第六个文件mysql.ibd
    打开数据库服务
    1. systemctl start mysqld.service
    若数据库打开失败,则更改/etc/my.cnf添加一下代码
    1. [mysqld]
    2. innodb_force_recovery = 6
    3. skip-grant-tables
    image.png

    ubantu

    关闭数据库服务
    1. service mysql stop
    2. service mysql status
    删除(rm)本地六个指定文件并导入(mv)数据库文件:
    1. ibdata1 # 共享表空间 ibdata1
    2. ib_logfile0 # 事务日志
    3. ib_logfile1 # 事务日志
    4. ib_buffer_pool # MySQL InnoDB缓冲池
    5. auto.cnf # MySQL启动时,会自动从auto.cnf 文件中获取server-uuid值,并将这个值存储在全局变量server_uuid中。如果这个值或者这个文件不存在,那么将会生成一个新的uuid值,并将这个值保存在auto.cnf文件中。
    6. mysql.ibd
    7. 注:比centos多一个mysql.ibd
    打开数据库服务发现报错
    1. service mysql start
    这时就要更改配置文件: vim /etc/mysql/my.cnf 然后再打开数据库服务
    1. [mysqld]
    2. innodb_force_recovery = 6 # 强制InnoDB恢复

重置mysql密码

关闭mysql服务

  1. service mysql stop # ubantu
  2. systemctl stop mysqld.service # centos

修改配置文件my.cnf

my.cnf配置文件的位置,centos一般在/etc/my.cnf,ubantu在/etc/mysql/my.cnf
在配置文件中,增加2行代码

  1. [mysqld]
  2. skip-grant-tables

作用是登录mysql的时候跳过密码验证

打开mysql服务

  1. service mysql start

进入mysql

  1. mysql -u root

image.png
success!!!