前言

有来项目的数据库在此之前使用的是 Docker 部署的,具体可见文章 Docker 安装 MySQL8​ ,服务器是阿里云 2C2G 的ECS轻量服务器,可能是配置问题有时不论查什么都要等很长很长时间,原因一直未明。网上也有相关资料说不推荐使用 Docker 跑数据库的,主要原因是IO和网络性能问题,可参考 你在 Docker 中跑 MySQL?恭喜你,好下岗了!,但是也有阿里、同程等使用容器部署数据库的案例,各执己见也没有个明确的结果,自己对这方面知之甚少所以不站队,因为没资格。

再申明一下,慢的离谱的原因猜测是自己的配置和服务器的问题,和容器部署关系不大。本篇补充 yum部署 MySQL 是没有找到具体原因换种部署方式,同样写本篇的目的也是为了下一篇文章 Canal 数据同步做准备。

卸载 MySQL

如果已经安装请先卸载

rpm -qa | grep -i mysql

CentOS8 部署 MySQL8_MySQL

yum remove -y mysql*

删除 MySQL 文件

find / -name mysql

安装 MySQL8

官方下载地址 ​​https://dev.mysql.com/downloads/repo/yum/​

根据操作系统选择对应的版本,我这里是 ​​Centos8​​ 选择第一个

CentOS8 部署 MySQL8_docker_02点击 ​​​Download​​​ 进入下载页面复制链接地址: ​​https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm​

CentOS8 部署 MySQL8_MySQL_03

下载源

wget https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm

安装源

yum localinstall mysql80-community-release-el8-1.noarch.rpm

禁用 Centos 8 自带的 MySQL 模块

yum module disable mysql

安装 MySQL 服务

yum install mysql-community-server

启动 MySQL

systemctl start mysqld

查看 MySQL 状态

systemctl status mysqld

CentOS8 部署 MySQL8_docker_04

MySQL 开机自启

systemctl enable mysqld
systemctl daemon-reload

MySQL 设置密码

获取临时密码

grep 'temporary password' /var/log/mysqld.log

CentOS8 部署 MySQL8_mysql_05

登录 MySQL

mysql -uroot -pqvysykoyf4=R

修改 MySQL 新密码 123456

ALTER USER 'root' @'localhost' IDENTIFIED BY '123456';

密码简单不满足密码策略

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

查看当前密码策略

SHOW VARIABLES LIKE 'validate_password%';

降低密码策略

set global validate_password.length=4;
set global validate_password.special_char_count=0;
set global validate_password.policy =LOW;

CentOS8 部署 MySQL8_ide_06

MySQL 开放远程连接

update user set host = '%' where user ='root';
alter user 'root'@'%' identified by '123456' password expire never;
alter user 'root'@'%' identified with mysql_native_password by '123456';
flush privileges;

CentOS8 部署 MySQL8_MySQL_07

短暂测试的效果查询没有出现像之前的容器部署 MySQL 出现查询非常久的问题。