Centos7离线安装Mysql5.7
卸载掉原有mysql
- 查看该操作系统上是否已经安装了mysql数据库
rpm -qa | grep mysql
- 有的话,我们就通过 rpm -e 命令 或者 rpm -e --nodeps 命令来卸载掉
rpm -e mysql // 普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
在删除完以后我们可以通过 rpm -qa | grep mysql 命令来查看mysql是否已经卸载成功!!
下载mysql5.7 rpm源
- 由于CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件
mkdir /home/software
cd /home/software
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
- 安装下载好的rpm包
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
拓展rpm知识:
-i 安装软件包 -e 删除软件包 -U 升级软件包
-v 显示安装过程
-h 显示进度
-q 查询某个包是否已经安装,例:rpm -q mysql
-qa 查询所有被安装的rpm package
-qf 查询某个文件属于哪个包
-ql 查询某个已安装软件所包含的所有文件
-qpR 查询某个包的依赖关系
安装参数
--force 即使覆盖属于其它包的文件也强制安装
--nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强制安装
如遇到问题:
事务概要
================================================================================================================================
安装 3 软件包 (+29 依赖软件包)
升级 ( 1 依赖软件包)
总计:217 M
Downloading packages:
warning: /var/cache/yum/x86_64/7/mysql57-community/packages/mysql-community-libs-5.7.37-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 检索密钥
源 "MySQL 5.7 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。
失败的软件包是:mysql-community-libs-5.7.37-1.el7.x86_64
GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
运行下面命令
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
使用yum命令安装
注意:必须进入到 /etc/yum.repos.d/目录后再执行以下脚本
cd /etc/yum.repos.d/
#1.安装命令
yum install mysql-server
#2.启动msyql
systemctl start mysqld
#3.获取安装时的临时密码(在第一次登录时就是用这个密码)
grep "password" /var/log/mysqld.log
#登录mysql
mysql -u root -p
登录成功后的操作
- 注意:这里会进行密码强度校验(密码设置时必须包含大小写字母、特殊符号、数字,并且长度大于8位)
- 如不满足以上条件则会报错,如下图:
密码策略问题异常信息:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements - 解决办法:
1、查看 mysql 初始的密码策略,
输入语句 “ SHOW VARIABLES LIKE 'validate_password%'; ” 进行查看,
2、首先需要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 即可,
输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,
3、当前密码长度为 8 ,如果不介意的话就不用修改了,按照通用的来讲,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 即可,
输入设值语句 “ set global validate_password_length=6; ” 进行设值,
4、现在可以为 mysql 设置简单密码了,只要满足六位的长度即可,
输入修改语句 “ ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ” 可以看到修改成功,表示密码策略修改成功了!!!
5、注:在默认密码的长度最小值为 4 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个,
只要设置密码的长度小于 3 ,都将自动设值为 4 ,
6、关于 mysql 密码策略相关参数;
1)、validate_password_length 固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count 整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count 整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;
- 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '@abcd123456';
- 开启远程控制
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
创建数据库
- 创建用户
CREATE USER 'xx'@'%' IDENTIFIED BY '123456';
- 创建数据库
CREATE DATABASE `db1` CHARACTER SET utf8mb4;
- 授权:
GRANT ALL ON `db1`.* TO 'xx'@'%' ;
修改数据库存储位置
- 首先看下整体的分区使用状况:
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 3.6G 47G 8% /
devtmpfs 7.5G 0 7.5G 0% /dev
tmpfs 7.5G 0 7.5G 0% /dev/shm
tmpfs 7.5G 8.9M 7.5G 1% /run
tmpfs 7.5G 0 7.5G 0% /sys/fs/cgroup
/dev/sda1 1014M 143M 872M 15% /boot
/dev/mapper/centos-home 1.8T 674M 1.8T 1% /home
tmpfs 1.5G 0 1.5G 0% /run/user/0
找到一个分区比较大的逻辑分区,同时也能看到数据库数据目录存储在哪个分区,已经占用了多少等等数据。
这里对于新手可能不知道数据储存目录属于哪个逻辑分区,可以使用df -h 文件路径 查看
df -h /var/lib/mysql/
- 创建新的目录(如果错误没有哪个文件夹就一步一步创建下去)
mkdir /home/data/
- mv或cp原始数据库数据目录文件
这里我用的是cp,为了安全考虑,直接复制一份,如果失败原始数据不会影响,可以快速回滚到之前的目录启动数据
cp -a /var/lib/mysql /home/data/
- 修改配置文件my.cnf
备份my.cnf
cp /etc/my.cnf /etc/my.cnfbak
#编辑配置文件
vi /etc/my.cnf
修改如下几项( #为了安全起见,你可以把原来的注释掉,然后重新加入一行,改成现在的目录,也会为了快速回滚。)
[client]
port= 3308 #更改端口号
socket= /home/data/mysql/mysql.sock
[mysqld]
socket= /home/data/mysql/mysql.sock
datadir= /home/data/mysql
- 重启mysql
service mysqld stop
service mysqld start