【前言】
之前安装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的卑微涛,咱们一起加油!