@TOC
rpm -qa | grep -i mysql
如果没就直接跳过,有通过如下命令删除。
rpm -ev mysql-community-client-5.7.35-1.el7.x86_64
(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,如图
(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
(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%';
通过validate_password_length可以指定密码长度
set global validate_password_length=6;
通过validate_password_policy可以修改密码校验强度
通过图下命令可以修改密码校验强度为低
set global validate_password_policy=0;
再次输入
set password=password("你的密码");
设置密码成功,可以退出登录测试。
(1) 关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
(2)登录到mysql
(3)授权通过密码连接
GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '你的登录密码' WITH GRANT OPTION;
(4)刷新
flush privileges;
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
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