数据库
首页 > 数据库> > CentOS7 安装MySQL8.0数据库【手把手安装】

CentOS7 安装MySQL8.0数据库【手把手安装】

作者:互联网

【前言】

之前安装MySQL5.7,把所有坑都碰了,今天安装8.0系统数据库时,有很多细节何5.7不一样,下面咱们一起愉快的安装数据库吧
这绝对能避开99%的安装的坑
提示:自定义文件安装的哦,所以和其他博文的一键安装可能有点出入

一、一个干净的安装环境

第一步,咱们开始安装…(省略5000字)
错!当然是需要一个清净、整齐、干净的安装环境啦~

1、删除MySQL的安装文件

查询MySQL的安装文件

# 目的:找到以前残留的MySQL文件
find / -name mysql

卸载:

# 如果以前安装过数据库,一般会在这里有残留
rm -rf /usr/local/env/mysql/mysql

2、删除MySQL的配置文件

删除/etc/my.cnf文件

rm -rf /etc/my.cnf

删除/etc/init.d/下跟mysql有关的全部文件,一般包括mysql文件或mysqld文件。

rm -rf /etc/init.d/mysql
rm -rf /etc/init.d/mysqlId

3、删除MySQL用户和用户组

userdel mysql

4、卸载Mariadb

#查看是否存在mariadb数据库,为了防止Mariadb与MySQL有冲突
rpm -qa|grep mariadb		#执行该指令,获取Mariadb的文件全名,在下一步用这种名称删除

#删除
rpm -e --nodeps mariadb文件名全称

#例如:
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

二、开始安装

1.上传数据库安装包

大功告成,下面咱们进入正题
我们选择的版本是mysql-8.0.22-linux-glibc2.12-x86_64.tar,有需要安装包的小伙伴可以选择如下方式下载

方法一: 官网:https://downloads.mysql.com/archives/community/
选择
方法二: 百度网盘:https://pan.baidu.com/s/1kfxrCc9Ny1Lw_HWMHKXerw
提取码:mysq
如果链接失效,请私聊我即可

2.前期准备

[提示] 本文为自定义安装目录,所以选择使用app目录,小伙伴们选择其他的路径也可以哒

先将要tar包放到统一的目录下,例如/app/

mkdir /app/
cd /app/

然后进行解压

# 把刚才下载好的安装,上传到 /app 目录下
tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz  #解压8.0 

建议重命名一下,方便后面输入路径

mv mysql-8.0.22-linux-glibc2.12-x86_64 mysql_3308

添加用户、用户组

groupadd mysql
useradd -r -g mysql mysql

注意注意!开始有坑了!一定要把这几个模块给yum安装好
检查是否安装libaid

rpm -qa |grep libaio

若没有安装,使用如下命令安装:

yum search libaio
yum install  libaio-devel.x86_64 -y
yum -y install numactl

3.配置my3308.cnf文件

提示:一般是建立my.cnf配置文件,这里用于区分,我命名为my3308.cnf配置文件

很重要,一定要注意

可以放到解压到的文件夹里,注意~该文件权限是644

cd /app/mysql/mysql_3308/etc/
touch my3308.cnf

#配置文件权限
chmod 644 /app/mysql/mysql_3307/etc/my3306.cnf 

下面的路径安装文件路径,是一幅示意图,大家可以按照这个进行参考
在这里插入图片描述

vim my3308.cnf  #写入文件,可以直接复制

[mysqld]
bind-address=0.0.0.0
port=3308
user=mysql
#指定路径
socket=/tmp/mysql3308.sock
#指定pid存放路径
pid_file=/app/data/data_3308/data/my3308.pid
#设置MySQL的安装目录
basedir=/app/mysql/mysql_3308
#设置MySQL数据库的数据的存放目录
datadir=/app/data/data_3308/data
#character config
character_set_server=utf8mb4
explicit_defaults_for_timestamp=true
symbolic-links=0

#log日志
log-error=/app/data/data_3308/logs/mysql3308.err
log_bin = /app/data/data_3308/binlog/mysql-bin
relay_log = /app/data/data_3308/relaylog/relay-bin
slow_query_log_file = /app/data/data_3308/logs/slow.log
slow_query_log=on
server-id=6

#innodb settings
innodb_buffer_pool_size=128M
#无密码登录,注意注意,这条参数先加上,等第一次登录修改密码后,再注释掉重启数据库,不然远程的navicat无法连接
skip-grant-tables
#开启GTID,用于主从复制
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1

#兼容新老版本的认证方式,8.0版本加入此行【又是一个坑】
default_authentication_plugin=mysql_native_password

[mysql]
socket = /tmp/mysql3308.sock

plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT

4.创建data文件夹及其下面的mysql目录

目的:用于放置刚才配置my.cnf中的路径

# 创建后数据库的所需存储文件位置
mkdir -p /app/data/data_3308/
cd /app/data/data_3308/

#在data里建立这个四个目录,用于存储.cnf指定的路径
mkdir binlog
mkdir logs
mkdir data
mkdir relaylog

将MySQL安装包目录和data目录下的所有所属用户和组改为MySQL

# 记得赋权,否则无法初始化
chown -R mysql:mysql /app/data
chown -R mysql:mysql /app/mysql

5.mysql初始化

先进入到安装文件夹的bin目录下

cd /app/mysql/mysql_3308/bin

#初始化,指定刚才建立的cnf文件即可
./mysqld --defaults-file=/app/mysql/mysql_3308/etc/my3308.cnf  --initialize-insecure

-- 参数解释
--initialize-insecure
--initialize : 给root@'localhost'用户生成一个临时密码。四种复杂度的12位密码。
			   这个密码只能第一次登录使用,并且登录后无法CRUD数据库,需要改密后才行

6.启动MySQL8.0

# 启动数据库
/app/mysql/mysql_3308/bin/mysqld_safe --defaults-file=/app/mysql/mysql_3308/etc/my3308.cnf &

# 解释:
# --defaults-file  指定cnf文件路径,因为我们是自定义数据库路径,需要给系统找到位置
# &  用于后台启动,即退出当前窗口后,数据库还能继续使用

查看是否启动:

ps -ef|grep mysql

在这里插入图片描述

7.配置mysql的路径(一些让我们更方便的记录)

相信大家看到了,我们想调用mysqld、mysqld_safe等指令时,都要到bin目录下,很麻烦,下面咱们去修改/etc/profile

vim /etc/profile +
# 在最后一行,写入
export PATH=/app/mysql/mysql_3308/bin:$PATH

# :wq 退出后,进行刷新该文件
source /etc/profile

登录数据库时,不用输入很长的指令

# 这这里,咱们使用alias别名的方式
vim /etc/bashrc +
# 也是在最后一行加入
alias my3308='mysql -S /tmp/mysql3308.sock -P 3309 -u root -p'

# :wq 退出后,进行刷新该文件
source /etc/bashrc

那么 ,咱们来看看这些配置是否成功了不~
当我们输入my指令时间,按住tab键,就会出现下列效果
在这里插入图片描述

8.关闭数据库(这里不用执行,只是作为一个记录)

mysqladmin -u root -p 密码 shutdown

#如何关闭mysql
mysqladmin -S /tmp/mysql3308.sock -u root -p shutdown
# 接下来输入数据库密码即可关闭了

三、登录数据库

刚才那一系列配置,咱们终于把数据库安装好了,下面咱们开始玩吧~

mysql -S /tmp/mysql3308.sock -u root -p
# 由于这个时候咱们还没该密码,第一次登录直接回车即可

1.下面开始修改密码,坑来喽,大家注意

# 5.7的数据库版本,是可以创建用户的同时更改密码
# 但8.0版本的数据库,是分开2步,即先创建用户,再赋予密码
flush privileges;  # 刷新权限
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;   # 修改加密规则 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';   # 更新一下用户的密码 
flush privileges;  # 刷新权限


# 创建新的用户;
create user humbletao@'%' identified WITH mysql_native_password BY '123';
grant all privileges on *.* to humbletao@'%' with grant option;
flush privileges;


# 为什么说有坑?
# 8.0的密码默认字符集是caching_sha2_password
# 升级版本时,需要换成mysql_native_password
# select user,host,plugin,authentication_string from mysql.user;	-- 查看字符集

2.最后一步,小伙伴注意避坑了

此时,就算防火墙关闭了,root用户也有了%的白名单,但还是不能远程登录,这是为啥呢?

#咱们返回到页面,可以看看mysql的端口,发现压根就没打开
netstat -lntup |grep 3308		# 3308是我们设置数据库的端口号

原来,是当时咱们配置3308.cnf文件时间,设置第一次登录免密码的属性,(导致端口号无法打开,就算本地能登录数据库,远程的navicat等还是无法登录)
下面,咱们返回到3308.cnf配置文件,把那一行属性注释后再重启数据库即可加一个#号

vim /app/mysql/mysql_3308/etc/my3308.cnf

在这里插入图片描述

# 关闭指令
mysqladmin -S /tmp/mysql3308.sock -u root -p shutdown

# 启动指令
/app/mysql/mysql_3308/bin/mysqld_safe --defaults-file=/app/mysql/mysql_3308/etc/my3308.cnf &

好嘞,下面就可以使用navicat进行远程登录了,感谢大家能读到这里,如果觉得有帮助,还请点一个免费的赞,谢谢大家了~
我是励志成为一名优秀DBA的卑微涛,咱们一起加油!

标签:cnf,data,app,CentOS7,MySQL8.0,3308,mysql,安装,数据库
来源: https://blog.csdn.net/weixin_45238761/article/details/122223176