mysql root用户恢复,数据库定时备份

mysql被黑,解决

mysql登录解决

  • services.msc 打开服务,停止mysql服务

  • 右键查看mysql属性,找到目录路径

  • 目录路径构成一般是:

    C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57
    
  • 进入bin目录,打开cmd,输入命令:这样可以跳过登录验证,不用密码

    mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" --console --skip-grant-tables
    
  • 另开启一个cmd,用命令登录mysql,出现Enter Password,直接回车

    mysql -u root -p
    
  • 查看mysql.user表中root用户是否还在

    select host,user from mysql.user;
    
  • 如果root用户没有了,就要创建

    # 一:创建root用户
    use mysql;
    create user 'root'@'localhost' identified by 'root';
    # 由于开启skip-grant-tables权限,上述命令无法执行,可能会报以下错误
    # ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
    flush privileges;#刷新配置
    # 再次创建
    create user 'root'@'localhost' identified by 'root';
    # 如果还报错,输入
    drop user 'root'@'localhost';
    # 再次创建
    create user 'root'@'localhost' identified by 'root';
    
    
    # 赋予权限
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; #赋予所有库所有表操作权限
    flush privileges;
    
    
    # 修改密码
    update mysql.user set authentication_string=password('自定义的密码') where user='root';
    flush privileges;
    
    # 如果想要外部访问
    update user set host = '%' where user = 'root';
    flush privileges;
    
    exit;
    
  • 关掉mysqlId命令打开的窗口

  • 服务中启动mysql服务

  • 登录

数据库备份

windows定时任务备份
  • 编写bat脚本

    rem autherBeginnerXiao
    rem date:20200814
    rem ******Backup MySQL Start******
    @echo off
    ::设置时间变量
    set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%"
    
    ::创建存储的文件夹
    if not exist "D:\mysql_backup" md "D:\mysql_backup"
    
    ::执行备份操作
    "D:\mysql-8.0.20-winx64\bin\mysqldump" --opt --user=root --password=root --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "demo" >D:\mysql_backup\backup_demo_%Ymd%.sql
    
    ::删除两周前的备份数据
    forfiles /p "D:\mysql_backup" /m backup_*.sql -d -14 /c "cmd /c del /f @path"
    
    @echo on
    rem ******Backup MySQL End******
    

    说明:

    2.备份操作:
    “D:\mysql-8.0.20-winx64\bin\mysqldump” :执行本地mysql文件安装路径的bin文件夹中的mysqldump
    –single-transaction=TRUE: 备份时没有锁表
    –user=root :mysql帐号
    –password=root :mysql密码
    –host=127.0.0.1 :mysql的ip地址
    –port=3306 :mysql的端口号
    –default-character-set=utf8 :备份默认编码
    events “demo” :进行备份的数据库名称
    ->D:\mysql_backup\backup_demo_%Ymd%.sql :备份文件存储的路径
    set “Ymd=%date:0,4%%date:5,2%%date:~8,2%” :设置备份的日期参数,以供给sql命名使用
    关于时间参数的参考:
    %date:~0,10% //提取年月日信息
    %date:~-3% //提取星期几信息
    %time:~0,5% //提取时间中的时和分
    %time:~0,-3% //提取时和分和秒信息
    *注意由于脚本文件以空格和逗号进行分隔执行,所以有关路径的如果路径中有空格,必须以双引号引起来
    *通常建议有关路径的都用双引号引起来

  • windows任务计划中创建基本任务,定时执行bat程序即可

linux定时备份
  • 创建备份目录

    cd /home
    mkdir backupcd backup
    
    
  • sh脚本

    # 备份命令
    #!/bin/bash
    mysqldump -uusername -ppassword DatabaseName > /home/backup/数据库名_$(date +%Y%m%d_%H%M%S).sql
    
    # 对备份内容进行压缩
    #!/bin/bash
    mysqldump -uusername -ppassword 数据库名 | gzip > /home/backup/数据库名_$(date +%Y%m%d_%H%M%S).sql.gz
    
  • crontab定时任务

维护固定数量备份文件
#!/bin/bash
 
#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/root/mysqlbackup
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=TankB214
#将要备份的数据库
database_name=edoctor
 
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then     
    mkdir -p $backup_dir;
fi
 
#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
 
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
 
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
 
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
 
if [ $count -gt $number ]
then
  #删除最早生成的备份,只保留number数量的备份
  rm $delfile
  #写删除文件日志
  echo "delete $delfile" >> $backup_dir/log.txt
fi
posted @ 2022-07-29 09:05  jpy  阅读(52)  评论(0编辑  收藏  举报