CentOS安装双版本MySQL

news2024/9/20 9:05:02

CentOS安装双版本MySQL

    • 一、下载mysql
    • 二、检查服务器是否安装过mysql
    • 三、卸载CentOS7自带的mariadb
    • 四、创建mysql用户和用户组
    • 五、安装mysql57 (第一个)
    • 六、安装mysql8 (第二个)

一、下载mysql

本文以5.7.31和8.0.38为例

  1. 去官网下载 压缩包

    https://dev.mysql.com/downloads/mysql/5.7.html
    https://dev.mysql.com/downloads/mysql/8.html

  2. 也可以直接在服务器运行下边这两条命令
    wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
    wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz

  3. 没有wget可以安装,命令 sudo yum install wget

  4. 完成下载后,上传至服务器想要的位置 /home/pkg/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz/home/pkg/mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz

二、检查服务器是否安装过mysql

  1. 检查有无安装过MySQL
rpm -qa|grep mysql
# 显示没有东西,便是没有安装过mysql
  1. 如果安装过或者系统自带,便需要去查询所有的mysql对应的文件,进行卸载,全部删除
whereis mysql
find / -name mysql

检查是否存在mysql

三、卸载CentOS7自带的mariadb

  1. 查看系统自带的
rpm -qa|grep mariadb
  1. 卸载Mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
  1. 删除掉etc下面的my.cnf,等会在建,不然会有问题
rm /etc/my.cnf

四、创建mysql用户和用户组

  1. 检查有没有mysql用户组,没有便进行创建
# 查看
cat /etc/group | grep mysql
cat /etc/passwd |grep mysql57
cat /etc/passwd |grep mysql8
  1. 创建MySQL用户组和用户
groupadd mysql
useradd -r -g mysql mysql57
useradd -r -g mysql mysql8

五、安装mysql57 (第一个)

  1. 解压MySQL安装包
tar -zxvf /home/pkg/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C /usr/local/mysql
  1. 修改目录名称
mv mysql-5.7.31-linux-glibc2.12-x86_64 mysql57
  1. 给用户组添加权限
chown -R mysql57:mysql /usr/local/mysql/mysql57
chmod -R 755 /usr/local/mysql/mysql57
  1. 配置第一个 MySQL 配置文件
vim /etc/mysql57.cnf

# 文件内容如下,路径修改为自己的路径

[client]
socket=/usr/local/mysql/mysql57/data/mysql.sock

[mysqld]
socket=/usr/local/mysql/mysql57/data/mysql.sock
datadir=/usr/local/mysql/mysql57/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
log-error=/usr/local/mysql/mysql57/data/mysqld.log
pid-file=/usr/local/mysql/mysql57/data/mysqld.pid
max_connections=400
innodb_file_per_table=1
#表名大小写不敏感, 敏感为
lower_case_table_names=1

#是否只读,1代表只读,0代表读写
read-only=0

#忽略的数据,指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01

# 指定用户
user=mysql57

[mysqld_safe]
socket=/usr/local/mysql/mysql57/data/mysql.sock

  1. 初始化MySQL 实例
# 进入安装目录
cd /usr/local/mysql/mysql57

# 初始化实例
bin/mysqld --defaults-file=/etc/my57.cnf --initialize --user=mysql57 --port=3306
  1. 查看初始化实例密码
vim /usr/local/mysql/mysql57/data/mysqld.log

在这里插入图片描述

  1. 启动实例
/usr/local/mysql/mysql57/bin/mysqld_safe --defaults-file=/etc/my57.cnf --user=mysql57 --port=3306 &
  1. 连接数据库测试
mysql -h127.0.0.1 -uroot -p
  1. 由于安装双版本mysql修改了 mysql.sock ,本地启动命令行需要添加 -h127.0.0.1 才能正常连接, 否则会报错找不到 mysql.sock
  2. 如果连接时出现错误:
    mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
    是因为系统中的该文件版本不一致导致,通过软连接重定向解决:
    sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
    其他类似的错误解决方法一致
  1. 修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
  1. 开启远程访问
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

如果远程访问不能连接,检查是否开启了防火墙 (firewalld)

  1. 创建mysql服务
vim /usr/lib/systemd/system/mysql57.service

# 写入下边的配置信息, User、Group、ExecStart 根据自己的实际情况修改
[Unit]
Description=MySQL Server on port 3306
After=network.target

[Service]
User=mysql57
Group=mysql
ExecStart=/usr/local/mysql/mysql57/bin/mysqld_safe --defaults-file=/etc/my57.cnf --user=mysql57 --port=3306
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure
RestartSec=5s
LimitNOFILE=5000

[Install]
WantedBy=multi-user.target
  1. 开启mysql服务
// 重新加载服务信息
systemctl daemon-reload

// 开启mysql57服务
systemctl start mysql57

// 设置服务开机自启
systemctl enable mysql57

六、安装mysql8 (第二个)

  1. 解压MySQL安装包
tar -zxvf /home/pkg/mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz -C /usr/local/mysql
  1. 修改目录名称
mv mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz mysql8
  1. 给用户组添加权限
chown -R mysql8:mysql /usr/local/mysql/mysql8
chmod -R 755 /usr/local/mysql/mysql8
  1. 配置第二个 MySQL 配置文件
vim /etc/mysql8.cnf

# 文件内容如下,路径修改为自己的路径

[client]
socket=/usr/local/mysql/mysql8/data/mysql.sock

[mysqld]
socket=/usr/local/mysql/mysql8/data/mysql.sock
datadir=/usr/local/mysql/mysql8/data
port=3307
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
log-error=/usr/local/mysql/mysql8/data/mysqld.log
pid-file=/usr/local/mysql/mysql8/data/mysqld.pid
max_connections=400
innodb_file_per_table=1
#表名大小写不敏感, 敏感为
lower_case_table_names=1

#是否只读,1代表只读,0代表读写
read-only=0

#忽略的数据,指不需要同步的数据库
#binlog-ignore-db=mysql
#指定同步的数据库
#binlog-do-db=db01

# 指定用户
user=mysql8

[mysqld_safe]
socket=/usr/local/mysql/mysql8/data/mysql.sock

  1. 初始化MySQL 实例
# 进入安装目录
cd /usr/local/mysql/mysql8

# 初始化实例
bin/mysqld --defaults-file=/etc/my8.cnf --initialize --user=mysql8 --port=3307
  1. 查看初始化实例密码
vim /usr/local/mysql/mysql8/data/mysqld.log

在这里插入图片描述

  1. 启动实例
/usr/local/mysql/mysql8/bin/mysqld_safe --defaults-file=/etc/my8.cnf --user=mysql8 --port=3307 &
  1. 连接数据库测试
mysql -h127.0.0.1 -P3307 -uroot -p
  1. 双版本需要用 -P3307 指定端口号确定连接那个mysql服务
  2. 由于安装双版本mysql修改了 mysql.sock ,本地启动命令行需要添加 -h127.0.0.1 才能正常连接, 否则会报错找不到 mysql.sock
  3. 如果连接时出现错误:
    mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
    是因为系统中的该文件版本不一致导致,通过软连接重定向解决:
    sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
    其他类似的错误解决方法一致
  1. 修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
  1. 开启远程访问
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

如果远程访问不能连接,检查是否开启了防火墙 (firewalld)

  1. 创建mysql服务
vim /usr/lib/systemd/system/mysql8.service

# 写入下边的配置信息, User、Group、ExecStart 根据自己的实际情况修改
[Unit]
Description=MySQL Server on port 3307
After=network.target

[Service]
User=mysql8
Group=mysql
ExecStart=/usr/local/mysql/mysql8/bin/mysqld_safe --defaults-file=/etc/my8.cnf --user=mysql8 --port=3307
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure
RestartSec=5s
LimitNOFILE=5000

[Install]
WantedBy=multi-user.target
  1. 开启mysql服务
// 重新加载服务信息
systemctl daemon-reload

// 开启mysql8服务
systemctl start mysql8

// 设置服务开机自启
systemctl enable mysql8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1928170.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp 微信小程序根据后端返回的文件链接打开并保存到手机文件夹中【支持doc、docx、txt、xlsx等类型的文件】

项目场景: 我们在使用uniapp官方提供的uni.downloadFile以及uni.saveFile时,会发现这个文件下载的默认保存位置和我们预想的不太一样,容易找不到,而且没有提示,那么我们就需要把文件打开自己保存并且有提示保存到哪个…

如何构建全生命周期的安全体系架构来确保容器的安全?

容器技术在云原生应用和微服务架构中得到了广泛应用,其轻量、灵活和高效的特点使其成为现代IT环境中的重要工具。然而,尽管容器带来了许多优势,但其安全性问题也不容忽视。接下来跟随博主一起探索如何构建全生命周期的安全体系架构以确保容器…

<数据集>钢索缺陷检测数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:1318张 标注数量(xml文件个数):1318 标注数量(txt文件个数):1318 标注类别数:3 标注类别名称:[break, thunderbolt] 序号类别名称图片数框数1break7678222thunderbo…

【HarmonyOS】HarmonyOS NEXT学习日记:一、创建和运行一个页面

【HarmonyOS】HarmonyOS NEXT学习日记:一 DevEco Studio下载与安装 直接到官网的下载地址下载即可 正常下载、解压、安装完成后 正常来说不会有项目,并且是英文界面。 需要汉化的话可以按照下面的步骤设置插件 选择customize里的 all setting 进入…

在 electron+vite+vue3+express 项目中使用better-sqlite3

文章目录 一、安装 electron-rebuild 和 better-sqlite3二、使用 electron-rebuild 重建 Node.js 模块三、better-sqlite3 的基本使用四、打包五、参考资料 一、安装 electron-rebuild 和 better-sqlite3 yarn add -D electron-rebuild yarn add better-sqlite3Electron 内置的…

【Android安全】Ubuntu 下载、编译 、刷入Android-8.1.0_r1

0. 环境准备 Ubuntu 16.04 LTS(预留至少95GB磁盘空间,实测占94.2GB) Pixel 2 XL 要买欧版的,不要美版的。 欧版能解锁BootLoader、能刷机。 美版IMEI里一般带“v”或者"version",这样不能解锁BootLoader、…

Pycharm与Gitlab交互

环境准备 1、下载配置好本地Git 2、配置Pycharm上的Git 3、gitlab账号 Gitlab配置 Gitlab配置中文 账号》设置》偏好设置》简体中文 创建项目 命令行操作 打开项目会展示以下步骤 在pycharm克隆gitlab的项目 通过菜单栏 1、在PyCharm的顶部菜单栏中,选择“V…

uniapp字符串转base64,无需导入依赖(多端支持)

使用示例 import { Base64Encode, Base64Decode } from "@/utils/base64.js" base64.js const _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";export const Base64Encode = (text)

鸿蒙基本工程目录

工程级目录 AppScope 中存放应用全局所需要的资源文件。entry 是应用的主模块,存放 HarmonyOS 应用的代码、资源等。oh_modules 是工程的依赖包,存放工程依赖的源文件。build-profile.json5 是工程级配置信息,包括签名、产品配置等。hvigorf…

uniapp-vue3-vite 搭建小程序、H5 项目模板

uniapp-vue3-vite 搭建小程序、H5 项目模板 特色准备拉取默认UniApp模板安装依赖启动项目测试结果 配置自动化导入安装依赖在vite.config.js中配置 引入 prerttier eslint stylelint.editorconfig.prettierrc.cjs.eslintrc.cjs.stylelintrc.cjs 引入 husky lint-staged com…

《0基础》学习Python——第十一讲

一、lambda 匿名函数 lambda函数是一种匿名函数。它是一种快速定义单行函数的方法。与常规函数不同,lambda函数没有名称,也没有使用def关键字来定义。lambda函数通常用于一些简单的函数,可以在代码中快速定义和使用,而不需要为其定…

推荐系统:从协同过滤到深度学习

目录 一、协同过滤(Collaborative Filtering, CF)1. 基于用户的协同过滤2. 基于物品的协同过滤 二、深度学习在推荐系统中的应用1. 深度学习模型的优势2. 深度学习在推荐系统中的应用实例 三、总结与展望 推荐系统是现代信息处理和传播中不可或缺的技术&…

异常检测算法

目录 一、异常检测算法功能:二、正态(高斯)分布:三、异常检测算法执行过程:四、如何选择特征:五、评估异常检测算法: 一、异常检测算法功能: 异常检测算法用来检测数据集中的一些异…

VsCode 与远程服务器 ssh免密登录

首先配置信息 加入下列信息 Host qb-zn HostName 8.1xxx.2xx.3xx User root ForwardAgent yes Port 22 IdentityFile ~/.ssh/id_rsa 找到自己的公钥,不带pub是私钥,打死都不能给别人。复制公钥 拿到公钥后,来到远程服务器 vim ~/.ss…

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之④:数据分析之三(数据展示)

概述 在先前探讨的文章中,我们构建了一个全面的数据测试体系,该体系遵循“数据获取—数据治理—数据分析”的流程。如何高效地构建数据可视化看板,以直观展现分析结果,正逐渐成为利用新兴技术提升效能的关键领域。伴随业务拓展、数…

前端路由手写Hash和History两种模式

文章目录 1. Hash模式:简洁而广泛适用2. History模式:更自然的用户体验3. 结论 在现代Web开发中,单页面应用(Single Page Application,简称SPA)因其流畅的用户体验和高效的页面交互能力而备受青睐。前端路由…

C#学习3-微软C#官方文档Microsoft-dotnet-csharp.pdf

文章目录 1.内插表达式的字段宽度和对齐方式 1.内插表达式的字段宽度和对齐方式 static void Main(string[] args) {var titles new Dictionary<string, string>() {["Doyle ,Arthur"] "Hound of the Basker,The",["Lodon ,Jack"] &quo…

数电基础 - 触发器

目录 ​编辑 一. 简介 二. SR锁存器 三. JK 触发器 四. D 触发器 五. 电平触发的触发器 六. 脉冲触发的触发器 七. 边沿触发的触发器 八 . 触发器的逻辑功能和描述方法 一. 简介 触发器是数字电路中的一种基本存储单元&#xff0c;具有记忆功能&#xff0c;能够存储一…

记录些MySQL题集(3)

MySQL 分区技术深入解析 分区的基本概念 MySQL分区 是一种数据库优化的技术&#xff0c;它允许将一个大的表、索引或其子集分割成多个较小的、更易于管理的片段&#xff0c;这些片段称为“分区”。每个分区都可以独立于其他分区进行存储、备份、索引和其他操作。这种技术主要…

【常见开源库的二次开发】基于openssl的加密与解密——Base58比特币钱包地址——算法分析(三)

目录&#xff1a; 目录&#xff1a; 一、base58(58进制) 1.1 什么是base58&#xff1f; 1.2 辗转相除法 1.3 base58输出字节数&#xff1a; 二、源码分析&#xff1a; 2.1源代码&#xff1a; 2.2 算法思路介绍&#xff1a; 2.2.1 Base58编码过程&#xff1a; 2.1.2 Base58解码过…