前言

最近某小伙伴要求我在centos7上安装MySQL,安装好后,又要求我卸载再安装到一个新的目录下,所以我选择新建立一个/app/目录,把所有的数据库文件放在该目录下

使用MySQL版本:mysql-5.7.32
centos版本:7.6
安装包链接:https://pan.baidu.com/s/1IIA9cNvSSmFbtOBe9P3QFw
提取码:32zx

安装路径示意图

当我们想要部署一个数据库时,第一时间一定不是直接登录服务器就开始干,而是要先规划好安装路径

一、卸载旧版

一定要卸载干净!!

1、删除MySQL的安装文件

查询MySQL的安装文件

find / -name mysql

卸载:

mv /usr/local/env/mysql/mysql /tmp

2、删除MySQL的配置文件

删除/etc/my.cnf文件

mv /etc/my.cnf /tmp

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

mv /etc/init.d/mysql /tmp
mv /etc/init.d/mysqlId /tmp

3、删除MySQL用户和用户组

userdel mysql

4、卸载MariDB

小声BB:明明MariDB和MySQL是兄弟,但服务器安装其他第三方时,老是因为这两哥们同时存在而报错,所以建议大家二选一安装(MariDB或MySQL)

#查看是否存在mariadb数据库
rpm -qa|grep mariadb#删除
rpm -e --nodeps mariadb文件名全称#例如:
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

二、开始安装

1、前期准备

先将要tar包上传到/app/mysql目录里

mkdir -p /app/mysql
cd /app/mysql

然后进行解压

tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz #解压5.7

把解压的安装包重命名一下为my_3306

mv mysql-5.7.32-linux-glibc2.12-x86_64 my_3306

把mysql的指令加入系统配置文件中,后面再次使用mysql相关指令时,不用进入MySQL的bin目录里面也可以执行

echo 'export PATH=/app/mysql/my_3306/bin:$PATH' >> /etc/profile
. /etc/profile      #重新加载profile文件

添加用户、用户组

groupadd mysql
useradd -r -g mysql mysql

检查是否安装libaid

rpm -qa |grep libaio

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

yum search libaio
yum install libaio-devel.x86_64 -y# 安装8.0需要加上
yum -y install numactl

2、配置my3306.cnf文件

提示:一般是建立my.cnf配置文件,这里用于区分,我命名为my3306.cnf配置文件
可以放到解压到的文件夹里,注意~该文件权限是644

mkdir -pv /app/mysql/my_3306/etc/
touch /app/mysql/my_3306/etc/my3306.cnf
#配置文件权限
chmod 644 /app/mysql/my_3306/etc/my3306.cnf
cat > /app/mysql/my_3306/etc/my3306.cnf <<EOF
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
#指定路径
socket=/tmp/mysql3306.sock
#指定pid存放路径
pid_file=/app/data/data_3306/data/my3306.pid
#设置MySQL的安装目录
basedir=/app/mysql/my_3306
#设置MySQL数据库的数据的存放目录
datadir=/app/data/data_3306/data
#character config
character_set_server=utf8mb4
explicit_defaults_for_timestamp=true
symbolic-links=0#log日志
log-error=/app/data/data_3306/logs/mysql3306.err
log_bin=/app/data/data_3306/binlog/mysql-bin
relay_log=/app/data/data_3306/relaylog/relay-bin
slow_query_log_file=/app/data/data_3306/logs/slow.log
slow_query_log=on#这里的server-id是用于标识主从复制库的
server-id=1#innodb settings
innodb_buffer_pool_size=128M
#无密码登录
skip-grant-tables
#开启PGID
gtid-mode=on
enforce-gtid-consistency=true
log-slave-updates=1[mysql]
prompt="(\\u@\\h :\D)[\\d]> "
socket=/tmp/mysql3306.sock
no-auto-rehash#增强密码安全强度
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
EOF

3、创建data文件夹及其下面的mysql目录

#在data里建立这个四个目录,用于存储.cnf指定的路径
mkdir -pv /app/data/data_3306/{binlog,logs,data,relaylog}

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

chown -R mysql:mysql /app/data/data_3306
chown -R mysql:mysql /app/mysql/my_3306

4、mysql初始化

cd /app/mysql/my_3306/bin#初始化,指定刚才建立的cnf文件即可
mysqld --defaults-file=/app/mysql/my_3306/etc/my3306.cnf  --initialize-insecure#更详细的初始化命令
mysqld --defaults-file=/app/mysql/my_3306/etc/my3306.cnf --initialize-insecure --user=mysql --basedir=/app/mysql/my_3306 --datadir=/app/data/data_3306/data-- 参数解释
--initialize-insecure
--initialize : 给root@'localhost'用户生成一个临时密码。四种复杂度的12位密码。这个密码只能第一次登录使用,并且登录后无法CRUD数据库,需要改密后才行#如果未能启动成功,把之前部分初始化的数据清空,然后再初始化一次,已经初始化成功,这条指令请忽略
rm -rf `ls /app/data/data_3306 |awk '{print $1"/*"}'`

查看初始密码:(如果在my3306.cnf配置文件里,加了skip-grant-tables参数,则查看不到登录密码)

#若执行此命令,没有显示密码信息,则在后面登录msyql输入密码的时候,回车即可
cat /app/data/data_3306/logs/mysql3306.err |grep password

5、启动mysql

#启动方法一
mysqld_safe --defaults-file=/app/mysql/my_3306/etc/my3306.cnf &#启动方法二
mysqld_safe --defaults-file=/app/mysql/my_3306/etc/my3306.cnf --basedir=/app/mysql/my_3306 --datadir=/app/data/data_3306/data &#关闭数据库,这里只是记录,不用执行
mysqladmin -S /tmp/mysql3306.sock -u root -p shutdown   #接下来输入root用户的密码即可关闭数据库

查看是否启动:

ps -ef|grep mysql
mysql> show global variables like 'port';  -- 查看当前端口号

三、登录MySQL

1、登录

mysql -S /tmp/mysql3306.sock -P 端口号 -u root -p
回车即可进入#小技巧,可以把启动命令设置为别名,下次登录输入my3306即可
#永久设置:vim /etc/bashrc  ,在最末尾加上alias语句即可
echo "alias my3306='mysql -u root -p -S /tmp/mysql3306.sock'" >> /etc/bashrc
. /etc/bashrc      #重新加载文件

2、修改密码

依次执行:

flush privileges;  -- 手动启用授权模式
grant all on *.* to root@'localhost' identified by '123';    -- 5.7修改本地密码
grant all on *.* to root@'%' identified by '123';    -- 5.7修改远程登录的密码
flush privileges;   -- 再执行一次,修改密码成功,退出再登录时,需要输入新密码即可登录-- 想再创建新的用户
create user dbatao@'%' identified WITH mysql_native_password BY '123';
grant all privileges on *.* to root@'%' with grant option;
flush privileges;

3.3306端口数据库安装完成

安装完成,想再安装一个新的实例的小伙伴请接着看第四点

四、新建一个数据库(3307端口)

下面,咱们快速在本机上再创建一个数据库实例,冲冲冲!

1、快速部署

使用相同的方式,建立一个新的3307端口的数据库,步骤相同

#修改my3307.cnf配置文件中
cp -ar /app/mysql/my_3306 /app/mysql/my_3307
mv /app/mysql/my_3307/etc/my3306.cnf /app/mysql/my_3307/etc/my3307.cnf
sed -i 's/3309/3307/g' /app/mysql/my_3307/etc/my3307.cnf#在data里建立这个四个目录,用于存储.cnf指定的路径
mkdir -pv /app/data/data_3307/{binlog,logs,data,relaylog}
chown -R mysql:mysql /app/data/data_3307
chown -R mysql:mysql /app/mysql/my_3307#初始化,指定刚才建立的cnf文件即可
mysqld --defaults-file=/app/mysql/my_3307/etc/my3307.cnf  --initialize-insecure
#启动
mysqld_safe --defaults-file=/app/mysql/my_3307/etc/my3307.cnf &
#查看是否启动
ps -ef|grep 3307
ss -lntup |grep 3307

2、登录

mysql -S /tmp/mysql3307.sock -P 端口号 -u root -p
回车即可进入#小技巧,可以把启动命令设置为别名,下次登录输入my3307即可
#永久设置:vim /etc/bashrc  ,在最末尾加上alias语句即可
echo "alias my3307='mysql -u root -p -S /tmp/mysql3307.sock'" >> /etc/bashrc
. /etc/bashrc      #重新加载文件

修改密码

flush privileges;  -- 手动启用授权模式
grant all on *.* to root@'localhost' identified by '123';    -- 5.7修改本地密码
grant all on *.* to root@'%' identified by '123';    -- 5.7修改远程的登录密码
flush privileges;   -- 再执行一次,修改密码成功,退出再登录时,需要输入新密码即可登录

五、远程登录

在我们登录数据库,赋予root用户能远程链接的清空下,发现还是不能用navicat连接,那我们需要做一下步骤,来来来,最后一步了~

1、先关闭防火墙

systemctl status firewalld.service  #查看防火墙状态
systemctl restart firewalld.service  #重启防火墙systemctl stop firewalld.service  #停止firewall
systemctl disable firewalld.service  #禁止firewall开机启动

2、关闭SELinux

#临时关闭SELinux
setenforce 0#查看SELinux状态
getenforce#关闭开机自SELinux
编辑/etc/selinux/config文件
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

3.登录阿里云或者腾讯云平台,设置安全组

如果是自己搭建的本地虚拟机,忽略此步

六、总结

这篇初稿是2021年7月就发布了,今天突然回来再看看,发现当时的自己太随便了,直接笔记一放就完事了,埋下了一堆的坑,给自己借鉴的小伙伴们说一声“抱歉”,放心,现在修改过的这篇,经过测试,按照本文最前面的示意图部署的路径,可放心食用

在Linux安装两个MySQL5.7数据库实例相关推荐

  1. Linux安装达梦8国产数据库

    Linux安装达梦8国产数据库 1,修改文件配置 1)创建用户和组(使用root用户) 创建数据库软件安装用户组:dinstall groupadd -g 12349 dinstall 创建安装用户d ...

  2. linux安装或卸载mysql5,Linux环境下卸载、安装及配置MySQL5.1

    Linux环境下卸载原有MySQL5.1数据库,并重新安装MySQL数据库的示例记录. 一.卸载MySQL 查看主机中是否安装了MySQL数据库: [root@RD-viPORTAL-1 ~]# rp ...

  3. Linux安装mysql(mysql-5.7.23-1.el7.x86_64.rpm-bundle.tar)(万能解决登录问题,最详细教程)

    1.下载mysql 官网地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 注意事项: (1)下载的安装包必须是.rpm-bundl ...

  4. linux安装两个jdk_jdk在linux上安装过程

    虚拟机JDK Java虚拟机是运行所有Java程序的抽象计算机,是Java语言的运行环境. Java虚拟机就是一台虚拟的计算机,有自己的CUP处理器.内存,还具有相应的指令系统.Java虚拟机屏蔽了与 ...

  5. linux sqlplus 查询数据,Linux安装sqlplus及shell查询数据库

    下载rpm文件,安装orcacle sqlplus rpm –ivh oracle-instantclient-basic-10.2.0.4-1.i386.rpm rpm –ivh oracle-in ...

  6. linux安装两个独立显卡驱动,Manjaro Linux 双显卡安装步骤及独立显卡运行游戏(Nvidia GeForce GTX 980m)...

    manjaro是基于Arch Linux的一个发行版,继承了Arch滚动更新的特点,也可用使用AUR上大量的软件,开箱即用. 安装manjaro是十分简单的事,但对于双显卡的支持来说,还是存在BUG, ...

  7. linux下安装两个tomcat,linux安装两个tomcat-Go语言中文社区

    解压apache-tomcat-7.0.86.tar.gz,把解压后的复制一份 修改/etc/profile文件:vim /etc/profile#################我添加的start# ...

  8. DM达梦数据库在linux环境命令行创建注册数据库实例

    一.创建数据库 使用dminit创建数据库,位于安装目录的bin目录下(如:软件安装在 /data/dmdbms 下,则该工具位于 /data/dmdbms/bin 下) cd /data/dmdbm ...

  9. linux安装南大通用数据库 GBase 8s V8.8

    linux安装南大通用数据库 GBase 8s V8.8 1.操作系统.数据库 2.下载链接 3.安装文档 4.安装前准备 4.1.以root用户创建 gbasedbt 组和用户 4.2.创建 GBa ...

最新文章

  1. 东北师大计算机考研报名人数,东北师范大学考研难吗?一般要什么水平才可以进入?...
  2. OpenCV中的全景拼接例程
  3. 设计模式之三 装饰模式
  4. 浅谈数据中心集成的优势
  5. [ATF]-smc指令详解
  6. 《2022博客之星拉票专用帖》
  7. 计算机视觉与深度学习 | 对恐怖袭击事件记录数据的量化分析(附源代码):博主的机器学习首秀(研究生数学建模二等奖)
  8. linux编译cmake
  9. QString与中文问题
  10. QT示例:基于TCP 点对多Socket通讯(server,clients)
  11. float right不生效_【工具篇】程序员不愿意写 PPT 是姿势不对?
  12. 图的最短路算法(Dijkstra和Floyd-Warshall)
  13. 1.VBA实现EXCEL中Sheet1的 甲列 相同数值的行对应的乙列的数的和作为Sheet2中丙列中与Sheet1中甲列 相同的行对应的丁列的值...
  14. java序列化和反序列化练习
  15. 瑞星2008序列号正确号码
  16. linux msgctl清除缓存,linux消息队列
  17. Android 中的 ClassLoader 摘抄笔记
  18. win10计算机联接多个网络,win10两台电脑连接局域网的详细操作教程
  19. Opcode指令解析
  20. python线性回归实例 x轴坐标相同_python深度学习-tensorflow实现一个线性回归的案例...

热门文章

  1. 来自飞机座椅的实测数据
  2. 一个OneDark风格的Pycharm配色方案
  3. 【STM32编程】一个定时器生成多路PWM波形的原理和方法
  4. 企业网盘+超融合,联想云加速的双引擎
  5. 软件工程测试资源消耗,软件工程-软件测试报告.doc
  6. MySQL 数据(字段)类型
  7. 开发环境 EAS登录 license 许可修改
  8. oracle学号查询平均成绩,orcal数据库中查询出平均成绩大于60分的同学的学号和平均成绩...
  9. python入门笔记(1)
  10. 易风神通代理服务器 v2.5 绿色