前言

本文主要内容是在Linux上安装Mysql8.0,包括安装、配置等

一、环境

  • Cent OS 8.0
  • Mysql 8.0

二、Mysql概述

MySQL是一种关系型数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

  • 社区版:免费,但是不提供任何技术支持
  • 商业版:收费,可以试用30天,官方提供技术支持

本次安装使用免费的社区版

三、下载

1.访问官网:https://www.mysql/,如下图:

2.点击 DOWNLOADS,进入如下载页面,如下图:

3.点击MySQL Community (GPL) Downloads,下载社区版本,如下图:

4.点击Download Archives,进入下图页面:

5.点击MySQL Community Server,进入如下页面进行选择

此时的Mysql最高版本为8.0.28,根据你服务器的配置选择,我服务器是 CentOS 8 所以 Operating System 选择 Red Hat Enterprise Linux / Oracle Linux ,OS Version 选择 Red Hat Enterprise Linux 8 / Oracle Linux 8 (x86,64-bit),选择第一个点击 Download 下载。

6. 教程同版本Mysql,百度网盘下载:

        链接: https://pan.baidu/s/1sBpX7au9OxISp7wtqBQ2Hw?pwd=HEI1

        提取码: HEI1

四、安装

1.连接登陆进Linux系统,为了方便管理,我们先创建文件夹用来存放和安装我们下载的Mysql

# 创建多级目录

[root@VM-24-10-centos ~]# mkdir -p soft/mysql

# 进入创建的mysql目录

[root@VM-24-10-centos ~]# cd soft/mysql/

如下图

2.将下载的Mysql安装包上传到此路径下,上传方式可用 SFTP工具自行上传

上传成功后查看一下,如下图:

3.创建存放解压文件的文件夹mysql-8.0.28

4.解压到mysql-8.0.28文件夹

[root@VM-24-10-centos mysql]# tar -vxf mysql-8.0.28-1.el8.x86_64.rpm-bundle.tar -C mysql-8.0.28/

5.解压完成之后可以切换到 mysql-8.0.26 目录下查看解压后的文件

[root@VM-24-10-centos mysql]# cd mysql-8.0.28/ 
[root@VM-24-10-centos mysql-8.0.28]# ls

6.可以看到解压后的文件都是 rpm 文件,所以需要用到 rpm 包资源管理器相关的指令安装这些 rpm 的安装包

在安装执行 rpm 安装包之前先下载 openssl-devel 插件,因为 mysql 里面有些 rpm 的安装依赖于该插件。

[root@VM-24-10-centos mysql-8.0.28]# yum install openssl-devel

7.安装完该插件之后,依次执行以下命令安装这些 rpm 包

rpm -ivh mysql-community-common-8.0.28-1.el8.x86_64.rpm 
rpm -ivh mysql-community-client-plugins-8.0.28-1.el8.x86_64.rpm 
rpm -ivh mysql-community-libs-8.0.28-1.el8.x86_64.rpm 
rpm -ivh mysql-community-icu-data-files-8.0.28-1.el8.x86_64.rpm 
rpm -ivh mysql-community-devel-8.0.28-1.el8.x86_64.rpm 
rpm -ivh mysql-community-client-8.0.28-1.el8.x86_64.rpm 
rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm

8.在 Linux 中 MySQL 安装好了之后系统会自动的注册一个服务,服务名称叫做 mysqld,所以可以通过以下命令操作 MySQL:

  • 启动 MySQL 服务:systemctl start mysqld
  • 关闭 MySQL 服务:systemctl stop mysqld
  • 重启 MySQL 服务:systemctl restart mysqld

这里先启动 MySQL 服务

9.rpm 安装 MySQL 会自动生成一个随机密码,可在 /var/log/mysqld.log这个文件中查找该密码

cat /var/log/mysqld.log

10.A temporay password is generated for root@localhost: ****密码**** ,这里我安装的 MySQL 生成的临时密码是:eiDwhg1t9q,j,账号是 

root,有了账号和密码之后就可以连接 MySQL 了。

# 连接 MySQL 
mysql -u root -p

11.修改root用户密码,不修改临时密码不能进行任何操作

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

这里可能会提示 Your password does not satisfy the current policy requirements,意思是您的密码不符合当前规定的要求,你要么就把你的密码设置得复杂点,要么就去降低密码的校验规则。

在 Linux 上安装 MySQL 时会自动安装一个校验密码的插件,默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。修改密码时新密码是否符合当前的策略,不满足则会提示ERROR

先设置一个符合当前策略的密码:Root@123

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@123';

12.MySQL 8.0 调整密码验证规则:

mysql> set global validate_password.policy=0;
mysql> set global validate_password.length=1;

这时候就可以重新设置一个简单的最少4位的密码

13.此时host为localhost,不能远程访问,将localhost修改为%

# 切换数据库 
use mysql 
# 更改为% 
update user set host = '%' where user = 'root'; 
# 刷新权限 
flush privileges;

14.如果开启了防火墙,依然无法远程访问,可以关闭防火墙

# 关闭防火墙 
systemctl stop firewalld.service 
# 查看防火墙的状态 
firewall-cmd --state 
# 禁止firewall开机启动 
systemctl disable firewalld.service

或者为了安全,只开放特定的端口号,MySQL 默认端口是 3306

# 关闭防火墙 
systemctl stop firewalld.service 
# 3306 端口对外开放 
firewall-cmd --remove-port=3306/tcp --permanent 
# 重启防火墙 
firewall-cmd --reload

四、卸载

卸载 MySQL 前需要先停止 MySQL

命令:systemctl stop mysqld

停止 MySQL 之后查询 MySQL 的安装文件:rpm -qa | grep -i mysql

卸载上述查询出来的所有的 MySQL 安装包

rpm -e mysql-community-client-plugins-8.0.26-1.el7.x86_64 --nodeps 
rpm -e mysql-community-server-8.0.26-1.el7.x86_64 --nodeps 
rpm -e mysql-community-common-8.0.26-1.el7.x86_64 --nodeps 
rpm -e mysql-community-libs-8.0.26-1.el7.x86_64 --nodeps 
rpm -e mysql-community-client-8.0.26-1.el7.x86_64 --nodeps 
rpm -e mysql-community-libs-compat-8.0.26-1.el7.x86_64 --nodeps

删除MySQL的数据存放目录

rm -rf /var/lib/mysql/

删除MySQL的配置文件备份

rm -rf /etc/myf.rpmsave

五、常用设置

(1)创建用户与权限分配

默认的 root 用户只能当前节点localhost访问,是无法远程访问的,我们还需要创建一个新的账户,用于远程访问

语法格式:CREATE USER [ IDENTIFIED ] BY [ PASSWORD ]

mysql 8.0 以下

create user 'user1'@'%' IDENTIFIED BY 'User@123';

mysql 8.0

create user 'user1'@'%' IDENTIFIED WITH mysql_native_password BY 'User@123';

PS: mysql8.0 的默认密码验证不再是 password 。所以在创建用户时,create user ‘username’@‘%’ identified by ‘password’; 客户端是无法连接服务的,所以在创建用户的时候需要加上 WITH mysql_native_password

更多推荐

2023年 Linux Mysql8.0安装(详细教程)