介绍
RHEL 8 默认发布的MySQL版本8.0,它具有以下新功能:
1. 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 带来了更好的性能**
2. NoSQL:MySQL 从 5.7 版本开始提供 NoSQL 存储功能,目前在 8.0 版本中这部分功能也得到了更大的改进。该项功能消除了对独立的 NoSQL 文档数据库的需求,而 MySQL 文档存储也为 schema-less 模式的 JSON 文档提供了多文档事务支持和完整的 ACID 合规性。
3. 窗口函数(Window Functions):从 MySQL 8.0 开始,新增了一个叫窗口函数的概念,它可以用来实现若干新的查询方式。
4. 隐藏索引:在 MySQL 8.0 中,索引可以被“隐藏”和“显示”。当对索引进行隐藏时,它不会被查询优化器所使用。我们可以使用这个特性用于性能调试,例如我们先隐藏一个索引,然后观察其对数据库的影响。如果数据库性能有所下降,说明这个索引是有用的,然后将其“恢复显示”即可;如果数据库性能看不出变化,说明这个索引是多余的,可以考虑删掉。
5. 降序索引:MySQL 8.0 为索引提供按降序方式进行排序的支持,在这种索引中的值也会按降序的方式进行排序。
6. 通用表表达式(Common Table Expressions CTE):在复杂的查询中使用嵌入式表时,使用 CTE 使得查询语句更清晰。
7. UTF-8 编码:从 MySQL 8 开始,使用 utf8mb4 作为 MySQL 的默认字符集。
8. JSON:MySQL 8 大幅改进了对 JSON 的支持。
9. 可靠性:InnoDB 现在支持表 DDL 的原子性。
10. 高可用性(High Availability):InnoDB 集群为您的数据库提供集成的原生 HA 解决方案。
11. 安全性:对 OpenSSL 的改进、新的默认身份验证、SQL 角色、密码强度、授权。
目前 RHEL8 和 CentOS8 引用新的软件源方式——APPStream,针对非系统核心的软件可以让其保持支持主流版本的能力,以及满足部分客户同一个软件想同时安装不同版本的需求。
因此后续,RHEL 和 CentOS 8会 MySQL 8.1 或者 9 稳定版发布后提供收到官方支持的软件源安装支持。
安装
一、(可选)如果主机内存小于1G需要设置 SWAP,不然无法启动 MySQL。 MySQL 8.0 的 InnoDB 很吃内存。
| curl -o create-swap.sh https://gist.githubusercontent.com/ivmm/1ecb35c74caef54727cdd9798dfb72bd/raw/5e697441ba6784f04d674556462478e0e64a317a/create-swap.sh |
| sh create-swap.sh 1G// 1G设置1G交换内存,可以自定义 |
二、安装 MySQL8.0
yum install @mysql:8.0 -y
三、启动 MySQL8.0 服务和开启启动
| systemctl start mysqld |
| systemctl enable mysqld |
四、安全初始化,设置Root密码和进行安全设置
mysql_secure_installation
基本介绍:
Enter current password for root (enter for none):
解释:输入当前 root 用户密码,默认为空,直接回车。
Set root password? [Y/n] y > > 解释:要设置 root 密码吗?输入 y 表示愿意。
Remove anonymous users? [Y/n] y
解释:要移除掉匿名用户吗?输入 y 表示愿意。
Disallow root login remotely? [Y/n] y
解释:不想让 root 远程登陆吗?输入 y 表示愿意。
Remove test database and access to it? [Y/n] y
解释:要去掉 test 数据库吗?输入 y 表示愿意。
Reload privilege tables now? [Y/n] y
解释:想要重新加载权限吗?输入 y 表示愿意。
RHEL 8 下的 MySQL 8.0 使用mysql_native_password
作为默认的身份验证算法,而不是默认的 caching_sha2_password
,如果依赖于新算法,需要手动修改 /etc/my.cnf.d/mysql-default-authentication-plugin.cnf
文件
一、 登入数据库查看是否安装成功
mysql -u root -p
然后输入密码后登录
二、简单查个版本号校验一下
| mysql> select version(); |
| +-----------+ |
| | version() | |
| +-----------+ |
| | 8.0.13 | |
| +-----------+ |
| 1 row in set (0.00 sec) |
文件地址
MySQL 位置 | 路径 | 备注 |
my.cnf | /etc/my.cnf.d/mysql-server.cnf | /etc/my.cnf 是个空文件 |
目录 | /var/lib/mysql | |
socket | /var/lib/mysql/mysql.sock | |
错误日志 | /var/log/mysql/mysqld.log | |
PID文件 | /run/mysqld/mysqld.pid | |