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