Centos 7.6安装MySQL8.0

本文最后更新于:2 年前

Centos 7.6安装MySQL8.0

一.卸载历史版本MySQL

查看是否拥有历史版本
非首次安装需卸载历史版本MySQL,命令查看是否有安装MySQL历史版本组件

1
rpm -qa|grep mysql

查看MySQL服务状态

1
2
3
# service mysqld status
暂停MySQL服务
# service mysqld stop

卸载MySQL服务

需要把每个组件全部移除,注意可能会有组件的依赖前后顺序。

1
2
3
# rpm -ev [需要移除组件的名称]
或者
# rpm -e --nodeps [需要移除组件的名称] //此命令为强制卸载

二.安装MySQL

使用rpm来安装MySQL

因为CentOS 7默认安装的数据库是Mariadb,所以使用YUM命令是无法安装MySQL的,只会更新Mariadb。使用rpm来进行安装。可以在mysql的repo源仓库右键复制指定版本的数据库。

1
wget http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm

安装mysql80-community-release-el7-1.noarch.rpm包

1
sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm

安装完成后会在 /etc/yum.repos.d文件夹里面获得两个文件:mysql-community.repo && mysql-community-source.repo

使用yum安装mysql服务

1
sudo yum install mysql-server

如果显示以下内容说明安装成功
Complete!

异常处理

1
2
3
mysql-community-common-8.0.30-1.el7.x86_64.rpm 的公钥尚未安装
失败的软件包是:mysql-community-common-8.0.30-1.el7.x86_64
GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

执行命令解决异常

1
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

检查是否已经设置为开机启动MySQL服务

1
systemctl list-unit-files|grep mysqld

如果显示

1
2
3
[root@VM-0-11-centos ~]# systemctl list-unit-files|grep mysqld
mysqld.service enabled
mysqld@.service disabled

则表示已经设置为开机启动,如果没有设置为开机启动则执行

1
systemctl enable mysqld.service

查看MySQL是否启动未启动则执行启动服务命令

1
2
3
4
5
6
7
8
查看是否启动MySQL服务
ps -ef|grep mysql

启动服务
systemctl start mysqld.service

初始化MySQL
mysqld --initialize

查看MySQL初始默认密码

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

复制 root@localhost: 后面的密码。登录mysql,并粘贴默认密码
因为MySQL8.0的更改,导致必须要重置密码

1
alter user 'root'@'localhost' identified by '12345678';

如果设置密码时候出现提示

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

代表需要降低policy的等级后在执行

1
set global validate_password.policy=0;

开启MySQL远程连接

1
2
3
4
5
use mysql;
#修改root账户权限
update user set host = '%' where user = 'root';
#刷新权限
flush privileges;

创建用户及授权

创建用户

1
2
3
4
5
6
7
8
9
10
11
12
create user 'test1'@'localhost' identified by '密码';

# Mysql8.0默认采用caching-sha2-password加密,目前好多客户端不支持,可改为mysql_native_password;
create user 'test'@'%' identified with mysql_native_password BY '密码';
# 其中localhost指本地才可连接
# 可以将其换成%指任意ip都能连接
# 也可以指定ip连接

# 修改密码
Alter user 'test1'@'localhost' identified by '新密码';

flush privileges;

授权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
grant all privileges on *.* to 'test1'@'localhost' with grant option;
# with grant option表示该用户可给其它用户赋予权限,但不可能超过该用户已有的权限
# 比如a用户有select,insert权限,也可给其它用户赋权,但它不可能给其它用户赋delete权限,除了select,insert以外的都不能
# 这句话可加可不加,视情况而定。
# all privileges 可换成select,update,insert,delete,drop,create等操作 如:grant select,insert,update,delete on . to 'test1'@'localhost';
# 第一个*表示通配数据库,可指定新建用户只可操作的数据库
# 如:grant all privileges on 数据库.* to 'test1'@'localhost';
# 第二个*表示通配表,可指定新建用户只可操作的数据库下的某个表
# 如:grant all privileges on 数据库.指定表名 to 'test1'@'localhost';

# 刷新权限
flush privileges;
# 查看用户授权信息
show grants for 'test1'@'localhost';
# 撤销权限
revoke all privileges on *.* from 'test1'@'localhost';
# 用户有什么权限就撤什么权限

删除用户

1
drop user 'test1'@'localhost';