Centos7详细安装部署Mysql8.0两种方案
作者:mmseoamin日期:2024-01-19

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
                    

                    Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第1张

                    删除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 libaio
                    yum install -y libaio
                    

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

                    Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第2张

                    ①下载地址:

                    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/mysql
                    rm -rf /var/lib/mysql/mysql
                    rm -rf /usr/lib64/mysql
                    

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

                    find /etc -name my.cnf
                    rm -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版本

                      Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第3张

                      noarch是Architecture的缩写,说明这个包可以在各个不同的cpu上使用

                      这里我们选择__mysql80-community-release-el7-7.noarch.rpm

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

                      https://repo.mysql.com/

                      找到相应版本下载: mysql80-community-release-el7-7.noarch.rpm

                      Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第4张

                      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

                      Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第5张

                      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.rpm
                      rpm -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.rpm
                      rpm -ivh mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpm
                      rpm -ivh mysql-community-client-8.0.31-1.el7.x86_64.rpm
                      rpm -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 mysqld
                        systemclt status mysqld
                        

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

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

                        修改密码

                        mysql -uroot -p
                        ALTER 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 mariadb  
                        rpm -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/mysql
                        cp my.cnf my.cnf_bak #变相备份删除
                        

                        3.2 创建用户和组

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

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第6张

                        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.0
                        chmod -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命令检查资源包是否完整

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第7张

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第8张

                        .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       = 3306
                        default-character-set=utf8mb4
                        [mysqld]
                        port       = 3306
                        server-id  = 3306
                        user       = mysql
                        #数据存放目录
                        basedir=/usr/local/mysql-8.0
                        datadir=/usr/local/mysql-8.0/data
                        socket=/tmp/mysql.sock
                        #日志
                        log-error=/usr/local/mysql-8.0/data/mysql.log
                        pid-file=/usr/local/mysql-8.0/data/mysql.pid
                        #服务端使用的字符集默认为8比特编码
                        character-set-server=utf8mb4
                        lower_case_table_names=1
                        autocommit =1
                        [client]
                        port       = 3306
                        socket	   =/tmp/mysql.sock
                        character-set-server=utf8mb4
                        

                        Centos7详细安装部署Mysql8.0两种方案,参考图片,第9张

                        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
                        

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第10张

                        ②赋予执行权限

                         chmod +x /etc/init.d/mysqld
                        

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第11张

                        ③添加为服务

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

                        ④查看服务列表

                        chkconfig --list
                        

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第12张

                        3.10.2 启动mysql

                        /etc/init.d/mysqld start
                        

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第13张

                        3.10.2查看是否启动

                        ps -ef | grep mysql
                        

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第14张

                        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/bin
                        mysqld --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启动

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

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第15张

                        这是因为防火墙没有允许这个连接,我们还需要再设置一下,两种方式关闭防火墙,或者开放端口。

                        systemctl status firewalld #查看防火墙状态

                        systemctl stop firewalld #临时关闭防火墙

                        systemctl start firewalld #开启防火墙

                        systemctl restart firewalld #重启防火墙

                        systemctl disable firewalld #关闭防火墙开机启动

                        systemctl enable firewalld #开启防火墙开机启动

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

                        netstat -lntp #查看系统端口占用情况

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第16张

                        3.15.1 修改MySQL默认端口

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

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第17张

                        说明:

                        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
                        

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第18张

                        如果需要关闭端口,可执行如下命令

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

                        3)刷新防火墙配置

                        firewall-cmd --reload
                        

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第19张

                        4)查看已经开放的端口

                        firewall-cmd --list-ports
                        

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第20张

                        5)重启MySQL服务

                        systemctl start mysqld
                        

                        Centos7详细安装部署Mysql8.0两种方案,在这里插入图片描述,第21张

                        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详细安装部署Mysql8.0两种方案,在这里插入图片描述,第22张

                        参考链接:CentOS7下MySQL数据库二进制部署方法

                        https://mp.weixin.qq.com/s/iFOB7Ox4ADKxsb_52_nnGw