赞
踩
手上有个centos8stream的系统,要安装一个mysql5.7的数据库,二进制包还要配置,就寻思着整个yum安装试试看
首先,将 MySQL Yum 存储库添加到系统的存储库列表中。这是一次性操作,可以通过安装 MySQL 提供的 RPM 来执行。按着这些次序:
我这边系统是 centos8stream 但是我选择的是选择el7的包
至于为啥~
https://repo.mysql.com/yum/mysql-5.7-community/el/
可以看到57版本 el是只有567的~~
复制链接地址
执行代码
sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
安装下载的rpm包
sudo rpm -Uvh mysql80-community-release-el7-6.noarch.rpm
查看版本库(对于启用 dnf 的系统, 将命令中的 yum替换为dnf)
yum repolist all | grep mysql
上面可以看到,默认启用的是80,因为我是要57版本的所以要设置一下,启用57,禁用80
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
如果支持dnf的话 就换成
sudo dnf config-manager --disable mysql80-community
sudo dnf config-manager --enable mysql57-community
再次查看
这里默认的就是57版本的了
确保是禁用80启用57的 至于两个同时开启的话系统安装的是哪个 我也不清楚
有闲的难受的同学可以试一下然后给我留个言哈
官方解释
(仅限 EL8 系统)基于 EL8 的系统(例如 RHEL8 和 Oracle Linux 8)包含默认启用的 MySQL 模块。除非禁用此模块,否则它会屏蔽 MySQL 存储库提供的包。要禁用包含的模块并使 MySQL 存储库包可见,请使用以下命令(对于启用 dnf 的系统, 将命令中的 yum替换为dnf):
sudo yum module disable mysql
sudo yum install mysql-community-server
执行后报错:
Curl error (37): Couldn't read a file:// file for file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022 [Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022]
没有etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
文件
说明签名不正确
我们检查一下:
rpm --checksig mysql80-community-release-el7-6.noarch.rpm
可以看到
这里确实验签失败的
我们直接看文档验签环节,为了省事直接url导入签名( 官方文档)
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
再次执行安装…
执行
cat /etc/my.cnf
查看配置文件
可以看到 默认的数据目录实在/var/lib/mysql
我这台服务器的系统盘只有20G ,另外挂载了一块1T的盘 所以要变更数据目录到挂载盘上
如果不想变更的话 请直接跳过此步骤直接启动
修改配置文件
vim /etc/my.cnf
我修改了这几个目录
datadir=/data/mysql/data
socket=/data/mysql/mysql.sock
log-error=/data/mysql/log/mysqld.log
启动mysql
systemctl start mysqld
执行
journalctl -xe
查看报错信息
可以看到是selinux导致的问题,直接查看文档(官方文档)
MySQL 服务器读取和写入许多文件。如果没有为这些文件正确设置 SELinux 上下文,则可能会拒绝访问这些文件。
查看关于mysql的se权限
semanage fcontext -l | grep -i mysql
那就按照文档的来
semanage fcontext -a -t mysqld_db_t "/path/to/my/custom/datadir(/.*)?"
restorecon -Rv /path/to/my/custom/datadir
semanage fcontext -a -t mysqld_log_t "/path/to/my/custom/error.log"
restorecon -Rv /path/to/my/custom/error.log
semanage fcontext -a -t mysqld_var_run_t "/path/to/my/custom/mysql\.sock"
restorecon -Rv /path/to/my/custom/mysql.sock
执行systemctl start mysqld
还是报错 继续 journalctl -xe
跟着报错信息走
执行
sealert -l c9aa87e5-6309-448a-8a26-cfd04da2e7fe
说是这个目录 mysql要权限 那就给它
semanage fcontext -a -t mysqld_db_t "/data(/.*)?"
restorecon -Rv /data
再次启动成功
systemctl status mysqld
找到系统生成的初始密码 就在那个mysqld.log里面
或者执行
sudo grep 'temporary password' /var/log/mysqld.log
把目录换成你自定义存放日志的目录就行了
执行
myslq -u root -p
还要在/etc/my.cnf
里面添加client配置
[client]
socket=/data/mysql/mysql.sock
把client套接字文件改为上面的路径
就可以了:
systemctl start mysqld
systemctl status mysqld
在服务器的初始启动时,假设服务器的数据目录为空,会发生以下情况
服务器已初始化。
sudo grep 'temporary password' /var/log/mysqld.log
通过使用生成的临时密码登录并为超级用户帐户设置自定义密码,尽快更改 root 密码
进入mysql:
mysql -uroot -p
修改mysql密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Password!1';
Note
validate_password 默认安装。实现的默认密码策略validate_password要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且密码总长度至少为8个字符。
如果嫌本地安装或者测试环境觉得这样的密码策略麻烦的话,可以变更密码验证策略实现.
警告: 以下操作,请谨慎执行
进入mysql,查看密码验证策略(官方文档)
SHOW VARIABLES LIKE 'validate_password%';
变量解释(官方文档):
举例:如果你要设置123456这种密码,那就设置validate_password_policy为0,长度设置为6
SET GLOBAL validate_password_length=6
SET GLOBAL validate_password_policy=0
再次执行修改密码
可以看到 已经修改成功了
注意:
非测试环境强烈建议提高密码策略等级
use mysql; #进入数据库
update user set host = "%" where user = "root" ; #修改
FLUSH PRIVILEGES; #刷新配置
SELECT host,user FROM user ; #查看
systemctl status firewalld.service
查看端口开启情况
firewall-cmd --query-port=3306/tcp
开启端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙 使端口开启生效
systemctl restart firewalld
路过的同学点个赞吧,欢迎留言讨论…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。