• mysql5.7 安装与自动备份数据库 和数据的恢复


    @TOC

    安装Mysql5.7详细教程(开机自启)

    1、查看是否安装的mysql

    rpm -qa | grep -i mysql

    如果没就直接跳过,有通过如下命令删除。

    rpm -ev mysql-community-client-5.7.35-1.el7.x86_64
    
    • 1
    2、安装准备

    (1)下载mysql,如果没有weget先安装weget

    wget http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    
    • 1

    (2)安装MySQL的安装工具

    rpm -ivh mysql80-community-release-el7-3.noarch.rpm
    
    • 1

    (3)默认安装 的是mysql8.0,修改配置文件

     vim  /etc/yum.repos.d/mysql-community.repo
    
    
    • 1
    • 2

    将mysql80的enabled=1改为0,mysql57=0的enable改为1,如图

    在这里插入图片描述
    保存退出。

    3、开始安装Mysql

    (1)安装

    yum module disable mysql 
    yum -y install mysql-community-server
    
    • 1
    • 2

    解决安装Mysql失败:GPG密钥已安装,但是不适用于此软件包的问题

    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
    
    yum -y install mysql-community-server
    
    • 1
    • 2
    • 3

    (2)启动

    systemctl start mysqld.service
    
    • 1

    (3)查看是否启动

    systemctl status mysqld.service
    
    • 1
    4、修改密码

    (1)查看临时密码

    grep 'temporary password' /var/log/mysqld.log
    
    • 1

    红框内的就是临时密码。

    (2)用临时密码登录mysql

    mysql -uroot -p
    
    • 1

    把查看到的临时密码输入即可登录。

    (3)修改密码

    set password=password("你的密码")
    • 1

    这里可能遇到密码校验强度相关错误的提示,如下:

    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    
    • 1

    原因是因为密码设置的过于简单会报错,MySQL有密码设置的规范,具体是与validate_password_policy的值有关,下图表明该值规则

    如果想要查看MySQL完整的初始密码规则,登陆后执行以下命令

    SHOW VARIABLES LIKE 'validate_password%';
    
    • 1

    在这里插入图片描述
    规则如下:

    通过validate_password_length可以指定密码长度

    set global validate_password_length=6;
    
    • 1

    通过validate_password_policy可以修改密码校验强度
    在这里插入图片描述
    通过图下命令可以修改密码校验强度为低

    set global validate_password_policy=0;
    
    • 1

    再次输入

    set password=password("你的密码")
    • 1

    设置密码成功,可以退出登录测试。

    5、 开启远程连接

    (1) 关闭firewalld

    systemctl stop firewalld
    systemctl disable firewalld
    
    • 1
    • 2

    (2)登录到mysql

    (3)授权通过密码连接

    GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '你的登录密码' WITH GRANT OPTION;
    
    • 1

    (4)刷新

     flush privileges;
    
    • 1
    6、设置开机自启
    systemctl enable mysqld 
    systemctl daemon-reload
    
    • 1
    • 2

    查看是否设置成功,显示enabled表示设置成功

    systemctl is-enabled mysqld
    
    • 1

    自动备份数据库 和数据的恢复

    查询数据库备份方法:

    mysqldump -hhostname -uusername -ppassword -database databasename | gzip > backupfile.sql.gz
    
    • 1

    这样执行会出现问题 这里建议参数指向数据的my.cnf

    这里编辑my.cnf 添加用户名和密码

    注意:创建文件夹权限要够 我这里用的777

    vi /etc/my.cnf
    [mysqldump]
    host = localhost
    user = user
    password = password
    
    • 1
    • 2
    • 3
    • 4
    • 5

    下面记录我的备份和恢复处理

    数据库的备份脚本:mysql_backup.sh

    #!/bin/bash
    backupdir=/home/task/mysql/data
    time=` date +%Y-%m-%d-%H:%M:%S `
    db_name=mysite
    mysqldump --defaults-extra-file=/etc/my.cnf --databases $db_name | gzip > $backupdir/$time$db_name.sql.gz
    
    删除五天前的备份
    find $backupdir -name "*.sql.gz" -type f -mtime +5 -exec rm -rf {} \; > /dev/null 2>&1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    备份数据库后压缩数据库备份文件

    定时任务添加 每日凌晨备份数据库

    crontab -e
    0 0 * * * /home/task/mysql_backup.sh
    
    • 1
    • 2

    关于数据库的恢复

    #!/bin/bash
    backdir=/home/task/mysql/data
    gunzip < $backdir/2019-05-25-18:01:17mysite.sql.gz | mysql --defaults-extra-file=/etc/my.cnf mysite
    
    • 1
    • 2
    • 3

    这里要指定恢复数据库备份文件的名称 要先解压

    如果数据库备份文件没有压缩

    #!/bin/bash
    mysql --defaults-extra-file=/etc/my.cnf databasename < backupfile.sql
    
    • 1
    • 2

    mysql备份命令

    1、mysql备份单个数据库命令

    mysqldump --column-statistics=0 -h主机ip -P端口号 -u数据库用户名 -p数据库密码 数据库名称 > 想要备份的文件名称.sql
    
    • 1

    2、直接将MySQL数据库压缩备份

    mysqldump -h主机ip -u数据库用户名 -p数据库密码  数据库名称| gzip > 想要备份的文件名称.sql.gz
    
    • 1

    3、备份MySQL数据库某个(些)表

    mysqldump -h主机ip -u数据库用户名 -p数据库密码 数据库名称 表12 > 想要备份的文件名称.sql
    
    • 1

    4、同时备份多个MySQL数据库

    mysqldump -h主机ip -u数据库用户名 -p数据库密码 数据库1 数据库2 数据库3 > 想要备份的文件名称.sql
    
    • 1

    5、仅备份数据库结构

    mysqldump –no-data  数据库1 数据库2 数据库3 > 想要备份的文件名称.sql
    
    • 1

    6、备份服务器上所有数据库

    mysqldump –all-databases > 想要备份的文件名称.sql
    
    • 1

    7、还原MySQL数据库的命令

    mysql -h主机ip -u数据库用户名 -p数据库密码 数据库名称 < 备份文件.sql
    
    • 1
     mysqldump --column-statistics=0 -h主机ip -P端口号 -u数据库用户名 -p数据库密码 数据库名称 > 想要备份的文件名称.sql
    
    
    • 1
    • 2

    8、还原压缩的MySQL数据库

    gunzip < 备份文件.sql.gz | mysql -u用户 -p密码 数据库名称
    
    • 1

    9、将数据库转移到新服务器

    mysqldump -u用户 -p密码 数据库名称 | mysql –host=*.*.*.* -C 数据库名称
    
    • 1

    可能出现的错误

    1、unknown option ‘-b’ 错误

    解决方式: 将 -database 改为 --database

    2、Unknown table ‘column_statistics’ in information_schema 错误

    错误原因: 因为新版的mysqldump默认启用了一个新标志, 通过 --column-statistics=0 来关闭它.

    解决方案:

     mysqldump --column-statistics=0 -h主机ip -P端口号 -u数据库用户名 -p数据库密码 数据库名称 > 想要备份的文件名称.sql
    
    
    • 1
    • 2

    3、mysqldump: [Warning] Using a password on the command line interface can be insecure

    这个问题 ,应该是 mysql 5.6 6.7以上出现的;

    修改配置文件/etc/my.cnf

    vim /etc/my.cnf
    
    • 1

    添加

    [mysqldump]
     
    user=root
    password="mima"
    
    • 1
    • 2
    • 3
    • 4

    如果没有 [mysqldump] 片段 则需要添加

    user=mysql用户名
    
    password="密码"
    
    • 1
    • 2
    • 3

    然后 ,mysqldump 后边可以不输入 用户 密码,直接 执行

    mysqldump 库名 表名 > /data/bak/表_2022-06-09.sql
    
    • 1
  • 相关阅读:
    五、Spring Boot 整合持久层技术(4)
    Spring Boot、Spring MVC 和 Spring Cloud 深度解析
    玩转Vue3全家桶04丨升级:Vue2项目如何升级到Vue3?
    建立数据科学基础设施的绝佳指南 数据工程师都该人手一册
    jieba.posseg是jieba中的一个组件,它用于对文本进行词性标注
    走近足球运动·与棒球相似的体育项目·第一堂棒球课
    论文:Few-shot Named Entity Recognition with Self-describing Networks
    Java中锁的深入理解
    全局异常处理器@RestControllerAdvice解析 Springboot项目异常处理 JavaWeb @ExceptionHandler
    Oracle OCP / MySQL OCP认证容易通过吗
  • 原文地址:https://blog.csdn.net/qq_43412528/article/details/125636178