@TOC

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

1、查看是否安装的mysql

rpm -qa | grep -i mysql

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

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

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

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

(2)安装MySQL的安装工具

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

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

vim  /etc/yum.repos.d/mysql-community.repo

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

mysql 重装不损害原有的数据库_服务器


保存退出。

3、开始安装Mysql

(1)安装

yum module disable mysql 
yum -y install mysql-community-server

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

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

yum -y install mysql-community-server

(2)启动

systemctl start mysqld.service

(3)查看是否启动

systemctl status mysqld.service
4、修改密码

(1)查看临时密码

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

红框内的就是临时密码。

(2)用临时密码登录mysql

mysql -uroot -p

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

(3)修改密码

set password=password("你的密码");

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

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

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

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

SHOW VARIABLES LIKE 'validate_password%';

mysql 重装不损害原有的数据库_数据库_02


规则如下:

通过validate_password_length可以指定密码长度

set global validate_password_length=6;

通过validate_password_policy可以修改密码校验强度

mysql 重装不损害原有的数据库_sql_03


通过图下命令可以修改密码校验强度为低

set global validate_password_policy=0;

再次输入

set password=password("你的密码");

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

5、 开启远程连接

(1) 关闭firewalld

systemctl stop firewalld
systemctl disable firewalld

(2)登录到mysql

(3)授权通过密码连接

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

(4)刷新

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

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

systemctl is-enabled mysqld

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

查询数据库备份方法:

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

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

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

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

vi /etc/my.cnf
[mysqldump]
host = localhost
user = user
password = password

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

数据库的备份脚本: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

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

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

crontab -e
0 0 * * * /home/task/mysql_backup.sh

关于数据库的恢复

#!/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

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

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

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

mysql备份命令

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

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

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

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

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

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

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

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

5、仅备份数据库结构

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

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

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

7、还原MySQL数据库的命令

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

8、还原压缩的MySQL数据库

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

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

mysqldump -u用户 -p密码 数据库名称 | mysql –host=*.*.*.* -C 数据库名称
可能出现的错误

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

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

添加

[mysqldump]
 
user=root
password="mima"

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

user=mysql用户名

password="密码"

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

mysqldump 库名 表名 > /data/bak/表_2022-06-09.sql