CentOS7.6下MySQL8.0解压版安装详解

目录

  • 项目简介
  • 检查是否安装过MySQL
  • 下载MySQL8.0
    • wget下载
    • 本地下载
  • 解压
  • 安装步骤
    • 移动或重命名
    • 修改my.cnf配置文件
    • 创建mysql用户
    • 更改目录权限
    • 初始化mysql
    • 添加profile环境变量
    • 添加开机自启动
    • 启动MYSQL服务
    • 登陆MYSQL
    • 修改密码
    • 修改公网访问
    • 检查防火墙
  • 测试连接

项目简介

本文主要介绍CentOS下安装MySQL8.0(解压版),面向蓉蓉同志
至于5.6、5.7、8.0不同版本的测评,简单搜集了下

MySQL 5.6 VS 5.7压测报告
MySQL5.7和MySQL8.0性能测试对比

检查是否安装过MySQL

如果确定是没有安装过MySQL,那么就不用管了,如果不确定可以检查一下

rpm -qa | grep mysql
whereis mysql
find / -name mysql

出现的东西该删就删

下载MySQL8.0

下载的方式有很多,我介绍两种自己比较常用的

wget下载

首先打开MySQL官方下载地址
选择操作系统为Linux - Generic,或者Red Hat Enterprise(网上说是可以,反正我一般都是Linux通用版)
在这里我选择的是 Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive,点后面的下载按钮,后进入到下载页面,在“No thanks, just start my download.”链接上右键,复制到文件下载地址

https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

进入CentOS,在想要存放压缩包的地方(我是存放在/usr/local目录下)执行

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

随后将自动下载压缩包

本地下载

如果服务器上下载速度过慢,可以通过本地下载方式下载,并通过各种手段上传到服务器
步骤与上面说的类似,就不bb了

解压

进入到存放压缩包的目录下,我这里是/usr/local
由于我下的是xz后缀的压缩包,所以执行下面指令解压

tar -Jxvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

通俗的来说,tar是第一道压缩,xz是tar基础上的再压缩。

tar指令拓展

Linux tar命令详解 - 菜鸟教程

以下列几个常用的解压命令

tar -xvf  ***.tar      #解tar压缩包
tar -zxvf ***.tar.gz   #解tar.gz压缩包
tar -Jxvf ***.tar.xz   #解tar.xz压缩包

安装步骤

移动或重命名

闲的蛋疼的话,可以把文件夹转移到其他想要的地方,或者重命名一下
我这里就比较闲,把原来比较长的文件夹名字重命名为mysql

mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql

CentOS7.6下MySQL8.0解压版安装详解_第1张图片

修改my.cnf配置文件

解压完毕后,输入

vim /etc/my.cnf

打开mysql配置文件,初次打开如下图
CentOS7.6下MySQL8.0解压版安装详解_第2张图片
然后对配置文件进行一些必要的修改,具体修改完毕后如下

[mysql_safe]
# modify
log-error=/var/log/mysql/mysql-error.log
# modify
pid-file=/var/run/mysql/mysql.pid

#
# include all files form the config directory
#
!includedir /etc/my.cnf.d
[mysqld]
# modify 修改为自己mysql的根目录
basedir=/usr/local/mysql
# modify 修改为自己mysql根目录下的data目录,不存在也不要紧
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
# pid-file=/usr/local/mysql/tmp/mysql.pid
symbolic-links=0
# new 设置用户使用mysql
user=mysql
# new 缓存连接数
back_log=200
# new 最大连接数
max_connections=500
# new 使用mysql_native_password插件认证,否则native连不上,会提示需要升级版本
default_authentication_plugin=mysql_native_password
# new 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# new 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# new 
[mysql]
# new 设置字符编码为utf8mb4
default-character-set=utf8mb4
# new 
[client]
# new 其实是废的,需要改端口时才有用
port=3306
# new 设置字符编码为utf8mb4
default-character-set=utf8mb4

坑:开始把 [client] 放在了最上面,结果无法正常启动,调整位置后正常,反正看不懂的问题
除此之外的异常,可以参考

MySql提示:The server quit without updating PID file(…)失败

感觉第七点不靠谱,不要听

拓展:最常用vim指令介绍

打开文件后,按 a、i、o 都可以进入编辑模式
进入编辑模式后,按 esc 退出编辑模式

:q  #退出
:w  #保存
:wq #保存并退出
:q! #放弃保存并退出

创建mysql用户

打开终端,在任意目录下执行下面命令

groupadd mysql
useradd -g mysql mysql

更改目录权限

继续修改文件夹访问用户及文件夹权限

chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql

设置权限很重要,不然后面会造成log日志没有权限不能生成,pid文件没有权限不能生成等等

初始化mysql

切换到mysql的bin目录下

cd /usr/local/mysql/bin

执行mysql初始化命令

./mysqld --initialize

此处如果遇到

./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

说明没有安装libaio.so.1,安装即可,CentOS下在终端执行

yum install libaio

安装完毕后再次执行初始化命令
初始化完成时将打印出初始密码

注意!在此之前不要手动创建data文件夹,否则会出现data已存在,初始化失败的情况。如果创建了或者已经初始化过但失败了,可以删除data文件夹重新初始化。
在这里插入图片描述
记好初始密码

添加profile环境变量

随便哪个目录下,执行

vim /etc/profile

打开环境变量配置文件,在profile中最下方,新建MYSQL_HOME目录,值是mysql文件夹下的bin文件夹的地址

MYSQL_HOME=/usr/local/mysql/bin

一般会有类似

PATH=$PATH:XXXXXXX

的东西,在这个后面添加

:MYSQL_HOME

完整的就是

MYSQL_HOME=/usr/local/mysql/bin
PATH=$PATH:MYSQL_HOME

并执行立即刷新指令,非常重要,不刷新就不生效

source /etc/profile

此时可以不用非得在mysql/bin目录下运行mysql指令了,可以在任何地方使用mysql指令

添加开机自启动

在终端下执行以下命令,设置开机自动启动mysql服务

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

意思是将mysql.server文件软连接到 /etc/init.d/mysql目录(类似超链接),系统启动时会自动扫描/etc/init.d/mysql中的服务启动一遍
注意:这边的 /etc/init.d/mysql里的mysql,就是服务名称,可以自定义名字。

拓展:还有个systemctl,也是服务管理。以下是简单筛选的优质资料,以供参考

Linux 服务管理两种方式service和systemctl
systemctl 配置mysql 开机启动

启动MYSQL服务

因为上面注册的时候服务名称是mysql,如果有自定义根据自定义的来
在终端任意目录执行以下命令

service mysql start    #启动mysql
service mysql stop     #停止mysql
service mysql restart  #重启mysql

启动成功

登陆MYSQL

登陆,在终端任意目录执行以下命令

mysql -u root -p

然后输入之前初始化中用到的密码,登陆到mysql
CentOS7.6下MySQL8.0解压版安装详解_第3张图片

修改密码

MYSQL8安装后初次登陆必须修改密码,进入mysql后执行以下命令

ALTER USER "root"@"localhost" IDENTIFIED  BY "你的新密码";

修改公网访问

继续执行

use mysql;  
update user set host='%' where user ='root';
FLUSH PRIVILEGES;    #立即生效,必须

修改完后,执行quit退出mysql即可

检查防火墙

如果是阿里云之类的服务器可以登录阿里云控制台查看,默认是开放3306端口的,如果前面my.cnf中设置为其他端口的话,则需要单独开放一下。
下面介绍下在单机上如何开放防火墙端口
在终端任意目录执行以下命令

#检查是否有或者是否开启firewalld
systemctl status firewalld
#设置3306为永久开放
firewall-cmd --add-port=3306/tcp --permanent
#重启生效
firewall-cmd --reload
#查看防火墙开放端口
firewall-cmd --list-port

拓展:防火墙其他相关指令

systemctl status firewalld 		#检查firewalld系统服务运行状态
systemctl start firewalld      	#启动firewalld系统服务
systemctl stop firewalld      	#停止firewalld系统服务
systemctl restart firewalld  	#重启firewalld系统服务
#当然,这里用service firewalld xxx亦可

#查看firewall-cmd服务状态
firewall-cmd --state
#重启生效
firewall-cmd --reload
#查询端口8080/tcp是否开放
firewall-cmd --query-port=8080/tcp
#设置开放端口8080/tcp
firewall-cmd --permanent --add-port=8080/tcp
#取消开放端口8080/tcp
firewall-cmd --permanent --remove-port=8080/tcp

参数解释

  1. firwall-cmd:是Linux提供的操作firewall的一个工具
  2. –permanent:表示设置为持久
  3. –add-port:标识添加的端口

测试连接

在客户端Navicat中连接数据库进行测试。over

❤️

你可能感兴趣的:(CentOS7.6下MySQL8.0解压版安装详解)