一.卸载已经安装的mysql(卸载mysql前注意备份数据和表结构):

1.找到已经安装的mysql包

rpm -qa | grep mysql

centos7安装mysql5.7_mysql

依次执行下面命令进行卸载,xxxxx为包名

yum remove xxxxxxx

2.找到残留文件夹,进行删除

find / -name mysql

一般删除下面几个目录即可

/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql
/etc/my.cnf
/etc/my.cnf.d

二.安装mysql

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

安装mysql服务(mysql官方提供的repo文件/etc/yum.repos.d/mysql-community.repo包含所有历史版本的repo地址,只需要将特定版本进行enable即可。这里将8.0的repo禁用,然后启用5.7即可使用,大部分情况不需要调整,enable=1为启用,enable=0为禁用):

yum -y install mysql-community-server

三.mysql基础设置

1.找到临时密码

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

centos7安装mysql5.7_官网_02

2.登录后更改root密码,创建远程访问用户和权限

mysql -u root -p
set password for 'root'@'localhost' = password("blog51cto#123");

这里注意,由于高版本mysql对password的字段有调整,或许新的版本用的是authentication_string。

3.创建用户并配置权限:

grant all privileges on *.* to 'cnadmin'@'%' identified by 'cnadmin##$' with grant option;
flush privileges;

4.启动服务和配置防火墙

启动mysql服务:
systemctl restart mysqld
查看启动状态:
systemctl state mysqld
设置开机启动:
systemctl enable mysqld
systemctl daemon-reload
配置防火墙开放端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
查看防火墙开放端口列表:
firewall-cmd --list-ports

四.对于基本的mysql配置

优化的可以自行查询,主要开始配置注意下编码:

character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'

五.安装问题

1.对于yum -y install mysql-community-server的时候,有时候会提示

Error:Unable to find a match: mysql-community-server

先禁用本地的 MySQL 模块一路y,再尝试安装即可

yum module disable mysql

2.仓库 "MySQL 5.7 Community Server" 的 GPG 密钥已安装,但是不适用于此软件包

2.1.第一种方法可以尝试跳过验证,直接安装:

yum install -y mysql-community-server --nogpgcheck

2.2.第二种方法从官网下载验证文件:

清理下缓存目录:
yum clean packages
删除当前服务器的rpm的mysql验证配置:
rm /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
下载官网新的验证文件:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
再次安装:
yum install -y mysql-community-server

3.更改密码时提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

可以查看下密码验证等级:
SHOW VARIABLES LIKE 'validate_password%';
降低密码等级:
set global validate_password_policy=LOW;