CentOS7.3下使用YUM安装MySQL5.x和8.x
一、MySQL5版本安装
1.1.检查系统中是否已安装 MySQL。
rpm -qa | grep mysql
查询结果返回空值,则说明没有安装 MySQL 。
注意:在新版本的CentOS7中,默认的数据库已更新为了Mariadb,而非 MySQL,所以执行 yum install mysql 命令只是更新Mariadb数据库,并不会安装 MySQL 。
1.2.查看已安装的 Mariadb 数据库版本。
rpm -qa|grep -i mariadb
1.3.卸载已安装的 Mariadb 数据库。
rpm -qa|grep mariadb|xargs rpm -e --nodeps
1.4.再次查看已安装的 Mariadb 数据库版本,确认是否卸载完成。
rpm -qa|grep -i mariadb
1.5.下载安装包文件
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
1.6.安装mysql-community-release-el7-5.noarch.rpm包
rpm -ivh mysql-community-release-el7-5.noarch.rpm
安装完成之后,会在 /etc/yum.repos.d/ 目录下新增 mysql-community.repo 、mysql-community-source.repo 两个 yum 源文件。
执行 yum repolist all | grep mysql 命令查看可用的 mysql 安装文件。
1.6.安装mysql。
yum install mysql-server
注意:这里默认安装的是MySQL5.6,如下安装其他版本如下图:
在 /etc/yum.repos.d/ 目录下修改 mysql-community.repo
1.7.检查mysql是否安装成功
rpm -qa | grep mysql
1.8.启动 mysql 服务
systemctl start mysqld.service #启动 mysql systemctl restart mysqld.service #重启 mysql systemctl stop mysqld.service #停止 mysql systemctl enable mysqld.service #设置 mysql 开机启动
mysql常用文件路径:
/etc/my.cnf 这是mysql的主配置文件 /var/lib/mysql mysql数据库的数据库文件存放位置 /var/logs/mysqld.log 数据库的日志输出存放位置
1.9.设置密码
mysql5.6 安装完成后,它的 root 用户的密码默认是空的,我们需要及时用 mysql 的 root 用户登录(第一次直接回车,不用输入密码),并修改密码。
# mysql -u root mysql> use mysql; mysql> update user set password=PASSWORD("这里输入root用户密码") where User='root'; mysql> flush privileges;
10.设置远程主机登录
mysql> GRANT ALL PRIVILEGES ON *.* TO 'your username'@'%' IDENTIFIED BY 'your password';
执行以下命令,为root 用户添加远程登录的能力。
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";
二、CentOS7.3下安装MySQL8
在CentOS 7中安装MySQL 8.0的详细步骤如下:
2.1.添加MySQL Yum Repository:
首先,您需要添加MySQL官方的Yum存储库。打开终端,执行以下命令:
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
2.2.安装MySQL Community Server:
2.2.1.安装MySQL
安装MySQL Community Server 8.0版本。执行以下命令:
sudo yum install mysql-community-server
安装的时候会报错,错误日志中错误信息描述的就是验证 GPG
失败
文件中的 GPG 密钥:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql (0x5072E1F5) 已安装 为“MySQL 8.0 Community Server”存储库列出的 GPG 密钥已经安装,但它们对于此包不正确。 检查是否为此存储库配置了正确的密钥 URL。失败的包是:mysql-community-client-8.0.37-1.el8.x86_64
2.2.2. 解决方案
⑴.直接导入新的 GPG key (推荐)
MySQL
的最新 GPG
key
放在其官方的仓库地址中: https://repo.mysql.com,从更新日期中可以看到 MySQL
2023
年更换过一次,截止到 2024年5月17
日,目前最新的还是 2023
年更新的。如果以后再遇到此类错误可以去官方仓库地址中看一下,有最新的就直接使用最新的。
# 如果出现上面的报错,需要导入最新的 GPG key rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
如下图:
⑵.跳过验证 (不推荐)
yum install mysql-community-server -y --nogpgcheck
参数说明:
-y
:安装中的待确认操作不必询问,默认yes
。--nogpgcheck
:忽略gpg
验证。
2.3.启动MySQL服务
安装完成后,启动MySQL服务并设置开机自启动:
sudo systemctl start mysqld
sudo systemctl enable mysqld
2.4.查找初始密码
MySQL安装完成后,初始密码会被保存在日志文件中。使用以下命令查找初始密码:
sudo grep 'temporary password' /var/log/mysqld.log
查看密码
2.5.设置MySQL root密码
登录MySQL并设置root密码。首次登录时需要使用初始密码,然后根据提示修改密码:
mysql -u root -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'Augus@163.com';
注意:这里的密码需要设置一定的复杂度,密码至少8位且包含大小写字母、数字、特殊字符
⑴.查看密码的复杂度
show variables like 'validate%';
⑵.默认mysql密码需要含有数字、大小写字符、下划线等,这里设置密码验证级别为低即可
set global validate_password.policy=LOW;
⑶.默认mysql密码设置长度是8位,这里修改成6位
set global validate_password.length = 6;
⑷.这里就可以把密码修改的简单一点,设置为123456
alter user 'root'@'localhost' identified by '123456';
说明:
⑴.密码等级分类
MySQL的密码等级分为四个等级:LOW、MEDIUM、HIGH和STRONG。每个等级都有不同的密码要求和安全级别。
- LOW等级:只要求密码长度不少于4个字符,适用于测试和开发环境,安全性较低。
- MEDIUM等级:要求密码长度不少于8个字符,并包括至少一个大写字母、一个小写字母、一个数字和一个特殊字符(如$、#、@等),适用于一般生产环境,安全性较高。
- HIGH等级:要求密码长度不少于8个字符,并包括至少一个大写字母、一个小写字母、一个数字和一个特殊字符,但要求密码不能与用户名或其他常见的字符串相同,适用于较为敏感的生产环境,安全性更高。
- STRONG等级:要求密码长度不少于12个字符,并包括至少一个大写字母、一个小写字母、一个数字和一个特殊字符,还要求密码不能与用户名或其他常见的字符串相同,适用于高度敏感的生产环境,安全性最高。
⑵.设置密码等级
在MySQL中,可以使用以下命令设置密码等级:
SET GLOBAL validate_password.policy = 1; -- 设置密码策略为MEDIUM SET GLOBAL validate_password.length = 8; -- 设置密码长度为8 SET GLOBAL validate_password.number_count = 1; -- 设置密码中数字的最小个数为1 SET GLOBAL validate_password.special_char_count = 1; -- 设置密码中特殊字符的最小个数为1
以上命令将密码策略设置为MEDIUM,密码长度设置为8,密码中数字和特殊字符的最小个数都设置为1。可以根据需要调整这些值。
2.6.设置允许MySQL账户远程访问
root账户设置运行远程访问:
mysql> use mysql Database changed mysql> select host,user form user; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'user' at line 1 mysql> select host,user from user; +-----------+------------------+ | host | user | +-----------+------------------+ | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+------------------+ 4 rows in set (0.00 sec)
果然,发现root用户的访问权限是localhost,需要修改host为%,输入命令:
update user set host='%' where user='root'; flush privileges;
接口如下:
mysql> update user set host='%' where user='root'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 再次查询修改后结果,OK。结果如下: mysql> select host,user from user; +-----------+------------------+ | host | user | +-----------+------------------+ | % | root | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | +-----------+------------------+ 4 rows in set (0.00 sec)
新增用户(可选)
- 查看用户表
use mysql select host, user, authentication_string, plugin from user;
- 新增用户
//1.创建用户 @'%可以远程访问' create user 'test'@'%' identified by '123456'; //2.给用户test库的权限 grant all privileges on `test`.* to 'test'@'%'; //刷新权限 可以用远程连接 FLUSH PRIVILEGES;
2.7.配置MySQL安全性(可选)
运行MySQL提供的安全脚本,按照提示进行安全性配置:
sudo mysql_secure_installation
2.8.防火墙设置
如果系统开启了防火墙,需要允许MySQL服务通过防火墙。执行以下命令:
# 开启 service firewalld start # 开放3306端口 firewall-cmd --permanent --add-port=3306/tcp #重启防火墙(修改配置后要重启防火墙) firewall-cmd --reload