linux实验(数据库备份)

news2024/11/24 0:44:11

以下所有操作皆以机房电脑上的虚拟机为基础环境

下载链接:Linux课程机房虚拟机#

  1. 切换到root用户

    su - root
    
  2. 安装数据库mysql 5.7

    rpm -ivh https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-common-5.7.29-1.el7.x86_64.rpm https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-libs-5.7.29-1.el7.x86_64.rpm https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-client-5.7.29-1.el7.x86_64.rpm https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-server-5.7.29-1.el7.x86_64.rpm --force --nodeps
    
  3. 配置数据库cnf文件

    vim /etc/my.cnf
    

    在文件中添加以下代码:

    kip-grant-tables
    character_set_server=utf8
    init_connect='SET NAMES utf8'
    

    在这里插入图片描述

  4. 启动数据库

    systemctl start mysqld.service
    
  5. 进入数据库并配置密码

    mysql
    update mysql.user set authentication_string=password('123456') where user='root';
    
  6. 使配置生效

    flush privileges;
    
  7. 退出数据库

    exit
    
  8. 停止数据库

    systemctl stop  mysqld.service
    
  9. 编辑my.cnf配置文件将:skip-grant-tables这一行注释掉

    vim /etc/my.cnf
    

    在这里插入图片描述

  10. 重启数据库

    systemctl start mysqld.service
    
  11. 再次登录数据库

    mysql -uroot -p123456
    
  12. 创建数据库和表

    CREATE DATABASE IF NOT EXISTS Student;
    USE Student;
    CREATE TABLE `user` (
      `id` INT NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(255) NULL,
      `sex` VARCHAR(255) NULL,
      `phone` VARCHAR(255) NULL,
      PRIMARY KEY (`id`)
    );
    INSERT INTO `user` VALUES (1, 'zhangsan', '1', '123456');
    INSERT INTO `user` VALUES (2, 'lisi', '1', '123456');
    INSERT INTO `user` VALUES (3, 'wangwu', '1', '123467989');
    INSERT INTO `user` VALUES (4, 'chuanchuan', '2', '123456789');
    
  13. 退出数据库

    exit
    
  14. 创建数据库备份脚本

    vi cmysql.sh
    

    粘贴以下内容

    #!/bin/bash
    # 要备份的数据库列表
    DBLIST="mysql Student"
    
    # 要备份的目录
    BACKUPDIR=/mydata/backups/data/mysql
    
    # 要保存的时间
    NUMDAYS=30
    
    # 备份要用到Linux命令和MySQL数据库配置
    FINDCMD="find"
    MYSQLCMD="mysql"
    MyUSER="root"		# USERNAME
    MyPASS="123456"			# PASSWORD
    MyHOST="localhost"	# Hostname
    DUMPCMD="mysqldump -u$MyUSER -h $MyHOST -p$MyPASS --lock-tables --databases"
    GZIPCMD="gzip"
    
    # 备份的日期
    BACKUPDATE=`date +%Y%m%d_%H%M`
    
    function USAGE() {
    cat << EOF
    
    usage: $0 options
    
    This script backs up a list of MySQL databases.
    
    OPTIONS:
     -h Show this message
     -a Backup all databases
     -l Databases to backup (space seperated)
     -n Number of days to keep backups
    EOF
    }
    
    while getopts "hal:n:" opt;
    do
      case $opt in
        a)
          DBLIST=""
          ;;
        h)
          USAGE
    	  exit1
    	  ;;
    	l)
    	  DBLIST="$OPTARG"
    	  ;;
    	n)
    	  NUMDAYS="$OPTARG"
    	  ;;
    	\?)
    	  USAGE
    	  exit
    	  ;;
    	:)
    	  echo "Option -$OPTARG requires an argument.">&2
    	  exit 1
    	  ;;
    	esac
    done
    
    function ERROR() {
      echo && echo "[error] $@"
      exit 1
    }
    
    function NOTICE() {
      echo && echo "[notice] $@"
    }
    
    function RUNCMD() {
      echo $@
      eval $@
    }
    
    # 用备份的数据作健壮性判断
    if [ ! -n "$DBLIST" ]; then
      DBLIST= `$MYSQLCMD -N -s -e "show databases" | grep -viE ' (information_schema | performance_schema|mysql|test)'`
    
      if [ ! -n "$DBLIST" ]; then
        ERROR "Invalid database list"
      fi
    fi
    
    if [ ! -n "$BACKUPDIR" ]; then
      ERROR "Invalid backup directory"
    fi
    
    if [[ ! $NUMDAYS =~ ^[0-9]+$ ]]; then
      ERROR "Invalid number of days: $NUMDAYS"
    elif [ "$NUMDAYS" -eq "0" ]; then
      ERROR "Number of days must be greater than zero"
    fi
    
    # 屏蔽字
    umask 077
    
    # $BACKUPDIR是前面定义的备份的目录变量
    RUNCMD mkdir -p -v $BACKUPDIR
    
    if [ ! -d $BACKUPDIR ]; then
      ERROR "Invalid directory: $BACKUPDIR"
    fi
    
    NOTICE "Dumping MySQL databases..."
    RC=0
    
    for database in $DBLIST; do
      NOTICE "Dumping $database..."
      RUNCMD "$DUMPCMD $database | $GZIPCMD > $BACKUPDIR/${database}_$BACKUPDATE.sql.gz"
    
      RC=$?
      if [ $RC -gt 0 ]; then
        continue;
      fi
    done
    
    if [ $RC -gt 0 ]; then
      ERROR "MySQLDump failed!"
    else
      NOTICE "Removing dumps older than $NUMDAYS days..."
      RUNCMD "$FINDCMD $BACKUPDIR -name \" *.sql.gz\" -type f -mtime +$NUMDAYS -print0 | xargs -0 rm -fv"
    
      NOTICE "Listing backup directory contents..."
      RUNCMD ls -la $BACKUPDIR
    
      NOTICE "MySQLDump is complete!"
    fi
    
    # exit 0
    
  15. 运行脚本

    bash cmysql.sh
    

至此,恭喜你完成了该实验

参考链接:

centos7安装mysql(完整)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1646773.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS 2边学边练(43)-- 利用GTest写一个基本测试(C++)

前言 在ROS&#xff08;Robot Operating System&#xff09;中&#xff0c;gtest&#xff08;Google Test&#xff09;是一个广泛使用的C测试框架&#xff0c;用于编写和执行单元测试。这些测试可以验证ROS节点、服务和消息等的正确性和性能。 如果我们需要在写的包中添加测试&…

严苛工作环境下IMU的最佳选择—爱普生M-G364及M-G354

爱普生(EPSON)秉持其省、小、精的核心技术&#xff0c;并运用长期于工业市场中所累积的专业经验与知识&#xff0c;专注于研发符合市场需求的IMU产品&#xff0c;打造出即使在具高挑战性的严苛环境下&#xff0c;亦可提供优异稳定性及高分辨率的IMU产品。随着自主精密农业机械、…

echars设置渐变颜色的方法

在我们日常的开发中&#xff0c;难免会遇到有需求&#xff0c;需要使用echars设置渐变的图表&#xff0c;如果我们需要设置给图表设置渐变颜色的话&#xff0c;我们只需要在 series 配置项中 添加相应的属性配置项即可。 方式一&#xff1a;colorStops type&#xff1a;‘lin…

jenkins常用插件之Filesystem Trigger

安装插件 Filesystem Trigger 项目配置 验证 根据上述配置&#xff0c;当1.txt文件发生变化时&#xff0c;jenkins每分钟会进行检测&#xff0c;检测到后即进行任务构建&#xff0c;后续的具体操作可自行配置

C++ 如何进阶?

一、C基础&#xff08;3个月&#xff09; 1、面向对象的三大特性&#xff1a;封装、继承、多态 2、类的访问权限&#xff1a;private、protected、public 3、类的构造函数、析构函数、赋值函数、拷贝函数 4、移动构造函数与接贝构造函数对比 5、深接贝与浅贝的区别 6、空…

为什么相同内核的Linux桌面稳定干净,而Android却臃肿不堪?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「 Linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 对于这个问题&#xff0c;我…

每日一题 盛最多水的容器

. - 力扣&#xff08;LeetCode&#xff09; 思路分析: 利用函数的单调性解决这道题两端取最小&#xff0c;最小的往里找就是高不变或者缩小 宽减少 一定是减小的因此这题可以使用左右指针实现 public int maxArea(int[] height) {int left 0;int right height.length - 1;i…

红日靶场ATTCK 1通关攻略

环境 拓扑图 VM1 web服务器 win7&#xff08;192.168.22.129&#xff0c;10.10.10.140&#xff09; VM2 win2003&#xff08;10.10.10.135&#xff09; VM3 DC win2008&#xff08;10.10.10.138&#xff09; 环境搭建 win7&#xff1a; 设置内网两张网卡&#xff0c;开启…

TC3xx MTU概述(2)

目录 1.概述 2.如何配置NDT 3.小结 1.概述 上篇TC3xx MTU概述(1)-CSDN博客我们讲解了MTU基本功能和MBIST基本概念&#xff0c;接下来我们继续讲解MTU如何配置NDT算法。 2.如何配置NDT 前面聊了那么多概念&#xff0c;我们还是来看看如何配置MTU来实现NDT。 MTU寄存器分为…

为什么需要自动化测试?自动化有哪些优势?

前言 自动化测试&#xff0c;最近些年可谓是大火。招聘上的要求也好&#xff0c;培训班的广告也罢&#xff0c;比比皆是&#xff0c;足以说明它在业内的火爆程度。 虽然说会写自动化测试并不能说明你就很牛批&#xff0c;但是你不会的话&#xff0c;那么很抱歉&#xff0c;你…

如何复制本地docker镜像到其他主机

&#xff08;1&#xff09;打包镜像 比如我要复制的镜像是grafana的镜像 docker images 这里我把打包的镜像放在了根~目录下&#xff0c;如截图所示&#xff1a; docker save grafana/grafana:latest -o ~/grafana.jar &#xff08;2&#xff09;移动镜像 scp命令拷贝镜像到目标…

C语言 循环控制流程的跳转语句

本文 我们来说 控制流程的跳转语句 C语言 提供三种 控制流程的跳转语句 1. break 语句 我们之前讲 switch 时 大家已经看到过这个 break 了 作用是跳出当前 switch 在循环中 它的作用也差不多 这里 我们举个生活中的例子 例如 我们在操场上跑步 计划跑十圈 但是 还没跑完 我…

【数据结构初阶】希尔排序

鼠鼠最近学习了希尔排序&#xff0c;做个笔记&#xff01; 希尔排序也是插入排序的一种捏&#xff01;本篇博客也是用排升序来举例捏&#xff01; 希尔排序是基于直接插入排序的&#xff0c;是由大佬D.L.Shell提出的。 目录 1.希尔排序 1.1.预排序 1.2.直接插入排序 2.希…

jetson实操(二):jetson nano发送短信到指定用户

文章目录 一、准备工作二、代码实现 一、准备工作 腾讯云网址&#xff1a;点击 注&#xff1a;需先申请“短信签名”和“短信正文”&#xff0c;按照要求填写申请即可&#xff0c;腾讯云的审核效率还是很快的&#xff0c;一般在1-2个小时内就会有结果&#xff0c;链接&…

Linux环境创建普通用户,授权root权限。报错:usermod: group ‘sudo‘ does not exist

在Linux环境下&#xff0c;创建普通用户并授权root权限需要以下步骤&#xff1a; 1. 以root用户登录终端。 2. 执行以下命令创建一个新的用户&#xff0c;其中username为你想要创建的用户名&#xff0c;可根据实际情况自行更改。 adduser username 3. 设置该用户的密码&…

数据库原理与应用实验三 嵌套查询

实验目的和要求 加深和掌握对嵌套查询的理解和应用 实验环境 Windows10 SQLServer 实验内容与过程 图书&#xff08;书号&#xff0c;书名&#xff0c;价格&#xff0c;出版社&#xff09; 读者&#xff08;卡号&#xff0c;姓名&#xff0c;年龄&#xff0c;所属单位&a…

luci框架相关笔记

luci架构 LuCI 架构采用了MVC&#xff08;Model-View-Controller&#xff09;设计模式&#xff0c;各个目录的作用如下&#xff1a; model&#xff08;模型&#xff09;: 位于 /usr/lib/lua/luci/model 下&#xff0c;存放了与系统配置相关的模型脚本。这些脚本负责与底层系统…

有免费的通配符SSL证书吗?通配符证书的申请

首先要了解通配符SSL证书&#xff0c;需要先知晓我们常用的普通单域名SSL证书、多域名SSL证书与之的区别。 单域名SSL证书最容易理解&#xff0c;一张证书有且只能绑定与保护一个域名&#xff0c;例如www.123456.com 证书安装部署完成后则会激活对于该域名的https、即加密访问…

【Leetcode 42】 接雨水

基础思路&#xff1a; &#xff08;1&#xff09;需要将问题最小化&#xff0c;首先计算第i个位置最多容纳多少雨水&#xff08;细长的一条水柱&#xff09;&#xff0c;然后求和就是总的雨水量&#xff1b; &#xff08;2&#xff09;第i个位置容纳雨水量 min(左侧最高, 右…

【数据结构】单链表和双链表的基操实现

文章目录 一、链表的概念及结构二、链表的分类三、无头单向非循环链表1.单链表创建2.尾插和头插3.尾删和头删4.打印5.查找6.插入7.删除8.销毁 四、带头双向循环链表1.双链表的创建2.初始化3.判断链表是否为空4.尾插和头插5.尾删和头删6.查找7.插入8.删除9.销毁 五、总结链表和顺…