Centos7详细安装部署Mysql8.0两种方案

  • 一、环境检查:卸载mysql数据库
    • 1.1 查看mysql的安装情况
    • 1.2 依次删除所有相关的包
    • 1.3 查找关于mysql的目录
    • 1.4 依次删除这些文件夹
    • 1.5 找出并删除mysql的配置文件
  • 二 、方案一:使用 MySQL 官方 Yum 源
    • 2.1 Mysql 8.0下载
      • 2.1.1 官方yum源下载
      • 2.1.2 直接选择对应版本下载:
      • 2.1.3 下载rpm包
    • 2.2 配置my.cnf文件
    • 2.3 启动mysql服务并查看状态
    • 2.4 查看默认密码并登录修改密码
    • 2.5 配置开机启动启动(可选)
    • 2.6 防火墙放行3306端口
    • 2.7 安装后检查mysql版本
  • 三、方案二:通用二进制安装
    • 3.1 清理一下环境
    • 3.2 创建用户和组
    • 3.3 创建相关目录(软件目录,数据目录)
      • 3.3.1 软件目录
      • 3.3.2 数据目录
    • 3.4 设置权限
    • 3.5 上传并解压软件到数据目录
    • 3.6 建立软连接
    • 3.7 设置my.cnf
    • 3.8 把bin目录设置到环境变量中
      • 3.9 生效配置
    • 3.10 启动MySQL
      • 3.10.1 设置开机启动
      • 3.10.2 启动mysql
      • 3.10.2查看是否启动
    • 3.11 查看版本
    • 3.12 初始化系统库表(系统数据,数据库要启动,必须依赖一些表,系统表)
    • 3.13 初始化数据,初始化管理员的临时密码
    • 3.14 在登陆前修改密码(使用mysqld –initialize 初始化的数据)
    • 3.15 配置防火墙:
      • 3.15.1 修改MySQL默认端口
      • 3.15.2 防火墙开放端口
    • 3.16 测试连接

一、环境检查:卸载mysql数据库

1.1 查看mysql的安装情况

rpm -qa |grep -i mysql # -i表示忽略大小写
mysql80-community-release-el7-7.noarch
mysql-community-common-8.0.32-1.el7.x86_64
mysql-community-client-8.0.32-1.el7.x86_64
mysql-community-icu-data-files-8.0.32-1.el7.x86_64
mysql-community-server-8.0.32-1.el7.x86_64
mysql-community-client-plugins-8.0.32-1.el7.x86_64
mysql-community-libs-8.0.32-1.el7.x86_64
mysql-community-libs-compat-8.0.32-1.el7.x86_64

1.2 依次删除所有相关的包

yum remove mysql80-community-release-el7-7.noarch mysql-community-common-8.0.32-1.el7.x86_64 -y ...

或者

​rpm -e --nodeps mysql80-community-release-el7-7.noarch mysql-community-common-8.0.32-1.el7.x86_64 ...

查看版本:mariadb

在CentOS中默认安装有MariaDB,是MySQL的一个分支,主要由开源社区维护。
CentOS 7及以上版本已经不再使用MySQL数据库,而是使用MariaDB数据库。
如果直接安装MySQL,会和MariaDB的文件冲突。
因此,需要先卸载自带的MariaDB,再安装MySQL

rpm -qa | grep mariadb


删除mariadb

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64# rpm -e --nodeps 文件名

安装依赖包libaio

安装mysql之前还需要检查下libaio.so.1是否存在;如果不存在,则需要先安装依赖包。

方法一:服务器有网络的情况下,可以通过yum安装

yum search libaioyum install -y libaio

方法二:服务器没有网络,可以先在网络环境下载,然后传输到服务器上进行安装

①下载地址:
http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm
②安装命令:

rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm

1.3 查找关于mysql的目录

find /-name mysql
/etc/selinux/targeted/active/modules/100/mysql/var/lib/mysql/var/lib/mysql/mysql/usr/lib64/mysql

1.4 依次删除这些文件夹

rm -rf /var/lib/mysqlrm -rf /var/lib/mysql/mysqlrm -rf /usr/lib64/mysql

1.5 找出并删除mysql的配置文件

find /etc -name my.cnfrm -rf /etc/my.cnf

二 、方案一:使用 MySQL 官方 Yum 源

2.1 Mysql 8.0下载

2.1.1 官方yum源下载

  • 关于 yum源 下载链接
    https://dev.mysql.com/downloads/repo/yum/
  • 下载对应版本mysql源到本地,如果系统是centos7,这里选择el7版本

noarch是Architecture的缩写,说明这个包可以在各个不同的cpu上使用
这里我们选择__mysql80-community-release-el7-7.noarch.rpm

2.1.2 直接选择对应版本下载:

https://repo.mysql.com/
找到相应版本下载: mysql80-community-release-el7-7.noarch.rpm

2.1.3 下载rpm包

wget https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm 方案1
或者离线下载
https://www.cnblogs.com/jpxjx/p/16817724.html 方案2

yum install mysql80-community-release-el7-7.noarch.rpm -y ... #安装rpm包或者rpm -ivh mysql80-community-release-el7-7.noarch.rpm ... #安装rpm包

yum install -y mysql-community-server # 会自动把客户端装上 方案1
或者

#参考redhat7 部署安装mysql8.0文档# #方案2
https://www.cnblogs.com/jpxjx/p/16817724.html

rpm -ivh mysql-community-common-8.0.31-1.el7.x86_64.rpmrpm -ivh mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm #(注意这个装完才能装下面一个,否则会报错)rpm -ivh mysql-community-libs-8.0.31-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-8.0.31-1.el7.x86_64.rpmrpm -ivh mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpmrpm -ivh mysql-community-client-8.0.31-1.el7.x86_64.rpmrpm -ivh mysql-community-server-8.0.31-1.el7.x86_64.rpm #(注意上面两个装完才能装这个)

2.2 配置my.cnf文件

  • 可选项,如果不需要可跳过,但是建议)
    在mysql启动初始化前,一定要确认根据自己所需的MySQL参数,是否需要修改my.cnf文件
    比如区分表名大小写—–>lower_case_table_names = 1
    在MySQL8.0之前,是可以在mysql启动后进行重新修改的
    但是8.0之后,只能在MySQL启动前进行配置
    所以强烈建议,在第一次初始化启动MySQL前,先进行配置my.cnf
    可参考:https://blog.csdn.net/gzt19881123/article/details/109511245 进行配置
#数据库默认字符集, 主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)character-set-server = utf8mb4#数据库字符集对应一些排序等规则,注意要和character-set-server对应collation-server = utf8mb4_general_ci#设置client连接mysql时的字符集,防止乱码init_connect='SET NAMES utf8mb4'#是否对sql语句大小写敏感,1表示不敏感lower_case_table_names = 1

2.3 启动mysql服务并查看状态

systemctl start mysqldsystemclt status mysqld

2.4 查看默认密码并登录修改密码

grep "password" /var/log/mysqld.log

修改密码

mysql -uroot -pALTER USER 'root'@'localhost' IDENTIFIED BY 'Lqz12345" />; 

配置远程连接

USE mysql;UPDATE mysql.user SET host = '%' WHERE user = 'root';SELECT user, host, plugin, authentication_string FROM mysql.user;FLUSH PRIVILEGES;

参考链接:[https://juejin.cn/post/7043605280541638669](https://juejin.cn/post/7043605280541638669) #MySQL 8.0 创建用户及授权
参考链接:https://juejin.cn/post/7043605280541638669 #MySQL 8.0 创建用户及授权

2.5 配置开机启动启动(可选)

安装MySQL之后,默认为不自启,需要手动开启

查看MySQL是否自启:systemctl is-enabled mysqld开启自启 :systemctl enable mysqld关闭自启 :systemctl disable mysqld

显示enable表示开机自启动,如果是disable,可以修改为开机自启动

systemctl enable mysqld.service # 开机自启动systemctl disable mysqld.service # 禁用开机自启动

2.6 防火墙放行3306端口

永久开放3306端口firewall-cmd --permanent --zone=public --add-port=3306/tcp#重启防火墙systemctl restart firewalld#检测设定是否生效iptables -L -n | grep 3306

开放防火墙端口
开启root远程登录权限后,还无法直接被外界连接,因为MySQL的端口号3306在Linux中默认关闭的。

注意:使用阿里云等云服务器还需要在控制台中安全组策略打开端口,此处省略。
查询3306端口是否开启

firewall-cmd --query-port=3306/tcp

firewall-cmd --zone=public --add-port=3306/tcp --permanent #开启3306
firewall-cmd --reload #重新加载防火墙
链接参考:https://www.cnblogs.com/zh76412950/p/16692706.html

2.7 安装后检查mysql版本

mysqladmin --version # 看到是8.0的版本或mysql -V # 看到是8.0的版本

三、方案二:通用二进制安装

glibc版本的Mysql,不是编译版的,是直接编译好的,相当于windows的绿色版
下载链接:https://dev.mysql.com/downloads/mysql/

3.1 清理一下环境

检查:mariadb

rpm -qa |grep mariadbrpm -e --nodeps mariadb-libs

检查mysql的rpm包,有的话全删除
rpm -qa |grep -i mysql # -i表示忽略大小写
rpm -e --nodeps ... # 依次挨个删除
删除mysql相关的配置【my.cnf】和目录【mysql】

find /-name mysql #全部删除/var/lib/mysql
rm -rf /var/lib/mysqlcp my.cnf my.cnf_bak #变相备份删除

3.2 创建用户和组

#创建一个用户组:mysqlgroupadd mysql#用户 (用户名/密码)【创建一个系统用户:mysql,指定用户组为mysql】useradd -r -g mysql mysql#检查用户组、用户是否存在groups mysql

3.3 创建相关目录(软件目录,数据目录)

3.3.1 软件目录

mkdir -p /mnt/mysql-8.0 #用于存放安装包

3.3.2 数据目录

mkdir -p /usr/local/mysql-8.0 #安装目录

生产建议:软件目录和数据目录不要放在同一个地方,一般数据目录放在另一块磁盘上【数据磁盘】

3.4 设置权限

chown -R mysql.mysql /usr/local/mysql-8.0chmod -R 755 /usr/local/mysql-8.0

3.5 上传并解压软件到数据目录

安装包下载路径: https://downloads.mysql.com/archives/community/

版本: 8.0.31 — os:Linux-Generic —– osVersion:x86,64
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz # wget + url命令进行下载
tar -Jxvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql-8.0/ # 解压到数据目录

Tips:
如果下载速度很慢,或服务器没有网络,可以在Windows中下载好,然后将资源包通过Xftp传到服务器中,在进行后续操作,
使用md5sum mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz命令检查资源包是否完整

.tar.gz后缀:tar -zxvf 文件名
.tar.xz后缀:tar -Jxvf 文件名

3.6 建立软连接

in-s介绍: https://www.jianshu.com/p/b80f5e62b6dc
ln -s /usr/local/mysql-8.0my.cnf /etc/my.cnf

3.7 设置my.cnf

把默认/etc/my.cnf重命名或删除
centos7默认会有一个/etc/my.cnf文件,为了不影响安装,可以直接删除或重命名

mv /etc/my.cnf /etc/my.cnf.bak 或rm /etc/my.cnf
vim /etc/my.cnf
[mysql]#默认字符集default-character-set=utf8mb4[client]port = 3306default-character-set=utf8mb4[mysqld]port = 3306server-id= 3306user = mysql#数据存放目录basedir=/usr/local/mysql-8.0datadir=/usr/local/mysql-8.0/datasocket=/tmp/mysql.sock#日志log-error=/usr/local/mysql-8.0/data/mysql.logpid-file=/usr/local/mysql-8.0/data/mysql.pid#服务端使用的字符集默认为8比特编码character-set-server=utf8mb4lower_case_table_names=1autocommit =1[client]port = 3306socket =/tmp/mysql.sockcharacter-set-server=utf8mb4


vi/vim命令介绍:https://blog.csdn.net/blood_Z/article/details/125064927

3.8 把bin目录设置到环境变量中

vim /etc/profile #环境变量

#添加以下内容export PATH="$PATH:/usr/local/mysql-8.0/bin"

3.9 生效配置

source /etc/profile

3.10 启动MySQL

3.10.1 设置开机启动

①创建软链接

ln -s /usr/local/mysql-8.0/support-files/mysql.server /etc/init.d/mysqld


②赋予执行权限

 chmod +x /etc/init.d/mysqld


③添加为服务

 chkconfig --add mysqld #chkconfig --del mysqld(删除服务)

④查看服务列表

chkconfig --list

3.10.2 启动mysql

/etc/init.d/mysqld start

3.10.2查看是否启动

ps -ef | grep mysql

3.11 查看版本

mysql -V

mysql Ver 8.0.31 for Linux on x86_64 (MySQL Community Server – GPL)

3.12 初始化系统库表(系统数据,数据库要启动,必须依赖一些表,系统表)

cd /usr/local/mysql-8.0/binmysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql-8.0/ --datadir=/usr/local/mysql-8.0/data/ #初始化无密码 

或者

cd /usr/local/mysql-8.0/./bin/mysqld --user=mysql --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data --initialize #初始化有密码 

如果想设置初始为空密码,可以在–initialize后添加-insecure参数
初始化语句解释:

参数描述
defaults-file指定配置文件(要放在–initialize 前面)
user指定用户
basedir指定安装目录
datadir指定初始化数据目录
intialize-insecure初始化无密码

#如果存在报错:

mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
报错原因: Linux系统中缺少libaio-devel 软件包

yum install -y libaio-devel #安装libaio-devel

3.13 初始化数据,初始化管理员的临时密码

mysqld –initialize –user=mysql –basedir=/usr/local/mysql-8.0/ –datadir=/usr/local/mysql-8.0/data/
== 会打印出密码,记住,然后需要修改root密码后才能正常使用数据库==

3.14 在登陆前修改密码(使用mysqld –initialize 初始化的数据)

初始的随机密码在/usr/local/mysql-8.0/data/mysql.log
mysql -uroot -p #输入原始密码: i(/iJUN3EOey

#修改密码ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Lh@123456';#刷新权限FLUSH PRIVILEGES;

授权root用户允许远程登录

mysql>use mysql;mysql>update user set user.Host='%'where user.User='root';mysql>SELECT user, host, plugin, authentication_string FROM mysql.user;mysql>flush privileges;mysql>exit;

也可以创建新的可远程连接的用户

mysql>create user '用户名'@'主机' identified with mysql_native_password by '密码';mysql>grant all privileges on *.* to '用户名'@'主机';mysql>update user set user.Host='%'where user.User='用户名';mysql>flush privileges;

3.15 配置防火墙:

centos7中:使用systemctl启动
上面安装好了,也设置好了,可以使用图形化工具远程一连接就报错了。

这是因为防火墙没有允许这个连接,我们还需要再设置一下,两种方式关闭防火墙,或者开放端口。
systemctl status firewalld #查看防火墙状态
systemctl stop firewalld #临时关闭防火墙
systemctl start firewalld #开启防火墙
systemctl restart firewalld #重启防火墙
systemctl disable firewalld #关闭防火墙开机启动
systemctl enable firewalld #开启防火墙开机启动

正式工作环境,为了信息安全建议先修改数据库默认端口,然后通过防火墙开放这个自定义端口再进行使用。
netstat -lntp #查看系统端口占用情况

3.15.1 修改MySQL默认端口

vim /usr/local/mysql-8.0/my.cnf #修改配置文件my.cnf,将端口后修改为自定义端口号

说明:
Linux系统端口号范围为0-65535,不同的范围有不同意义 0 不使用 1–1023 系统保留,只能由root用户使用 1024—4999 由客户端程序自由分配 5000—65535 由服务器端程序自由分配 查看端口号在/etc/services

3.15.2 防火墙开放端口

1)开启防火墙

systemctl start firewalld

2)防火墙开启端口

firewall-cmd --zone=public --add-port=33066/tcp --permanent

如果需要关闭端口,可执行如下命令
firewall-cmd --zone=public --remove-port=33066/tcp --permanent

3)刷新防火墙配置

firewall-cmd --reload


4)查看已经开放的端口

firewall-cmd --list-ports


5)重启MySQL服务

systemctl start mysqld


PS

chkconfig --add mysqld # 把mysqld的脚本添加到systemctl的管理中chkconfig --list# 查看可以通过systemctl管理的脚本systemctl start mysqld###至此,启动方式可以是service mysqld start或者systemctl start mysqld或者/etc/init.d/mysqld start或者/usr/local/mysql-8.0/l/support-files/mysql.server start

3.16 测试连接

在Navicat上再次进行测试连接,成功了

参考链接:CentOS7下MySQL数据库二进制部署方法
https://mp.weixin.qq.com/s/iFOB7Ox4ADKxsb_52_nnGw