【史上最细教程】一台服务器上搭建2个MySQL实例

史上最细教程-一台服务器上搭建2个MySQL实例

文章目录

  • 史上最细教程-一台服务器上搭建2个MySQL实例
    • 环境准备:
    • 操作步骤:
      • 1.安装MySQL
      • 2.配置搭建3306、3307实例
      • 3.初始化3306、3307实例、远程连接访问支持
  • 推荐文章:

环境准备:

服务器:阿里云CentOS7

MySQL数据库:mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

这里已为您准备安装包(gitee): https://gitee.com/song-rice/devops-and-middleware-module-learning/blob/master/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz

或者去官网下载:http://dev.mysql.com/get/Downloads


操作步骤:

1.安装MySQL

先看看是否已安装过,如果已安装过,先卸载干净;然后检查安装环境是否支持,重新安装;

# 查找已安装的MySQL软件包
rpm -qa|grep mysql 
rpm -qa|grep mariadb   # CentOS7下还需要查找是否存在mariadb包# 如果输入上述两个命令后都输出存在有包,则需要执行删除命令
rpm -e --nodeps mysql-libs-xxx.el6.x86_64
rpm -e --nodeps mariadb-libs-xxx.x86_64# 增加文件操作权限,安装MySQL后MySQL会用户在/tmp目录下新建tmp_db文件,需要给/tmp目录较大的权限操作
chmod -R 777 /tmp# 检查系统中是否存在一些安装MySQL时需要的依赖库
rpm -qa|grep libaio
rpm -qa|grep net-tools# 如果不存在则需要安装 
yum install libaio   # 或者 yum -y install libaio net-tools
# MySQL 5.7.19和更高版本对libnuma库具有依赖性 
yum install libnuma

都没有问题后,将MySQL安装包直接解压到指定位置即可。

# 创建mysql用户和用户组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql  # 创建一个名为mysql的系统用户,该用户属于mysql组,但不能登录系统。这通常用于安装和配置MySQL数据库服务时使用。# 解压安装包
cd /usr/local/  # 进入安装包所在位置 
tar xzvf /mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz   # 解压后出现mysql文件夹# 解压后查看
cd /mysql
ls -l

(图示:我的安装包位置:/usr/local,我的解压位置:/usr/local/mysql)

image-20231122161737580


2.配置搭建3306、3307实例

到此,MySQL数据库装好了,下面就是创建对应3306、3307端口MySQL实例。

考虑下3306、3307不同实例数据文件放在哪?配置文件放在哪?这些都需要新建文件夹存放,

下面就是创建3306、3307不同实例的数据、配置等文件存放位置。

# 创建数据文件存放路径
mkdir -p /usr/local/mysql/{3306,3307}/data
# 修改文件权限属性
chown -R mysql:mysql /usr/local/mysql# 创建实例3306、3307配置文件my.cnf,直接复制下面的配置进去即可

/3306/my.cnf 里面就是指定端口、服务目录路径、数据存放路径、日志存放路径、进程文件路径、编码(数据库和服务端的默认字符都是latin1,如果不修改容易出现乱码)等

[mysqld]port=3306
user=mysql
basedir=/usr/local/mysql 
datadir=/usr/local/mysql/3306/data
lower_case_table_names=1
innodb_buffer_pool_size=128M
socket=/tmp/mysql_3306.sock
explicit_defaults_for_timestamp=truesymbolic-links=0log-error=/usr/local/mysql/3306/log/mysqld.log
pid-file=/usr/local/mysql/3306/run/mysqld.pidcharacter_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'

3307/my.cnf

[mysqld]port=3307
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/3307/data
lower_case_table_names=1
innodb_buffer_pool_size=128M
socket=/tmp/mysql_3307.sock
explicit_defaults_for_timestamp=truesymbolic-links=0log-error=/usr/local/mysql/3307/log/mysqld.log
pid-file=/usr/local/mysql/3307/run/mysqld.pidcharacter_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'

(图示:我的3306、3307实例数据、配置等文件存放位置)

image-20231122162039534

(图示:我的3306、3307目录)

image-20231122164911234

image-20231122164849802

now,3306、3307配置就完成了,现在开始初始化这两个数据库实例,设置mysql系统环境变量,最后启动指定实例,root账号密码登录即可。

# 初始化3306实例数据库  
# 指定配置文件、基础目录路径、数据存放路径
# 注意,初始化结束的最后一行记录了root的密码,记录下来
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/3306/data
# 初始化3307实例数据库
# 注意,初始化结束的最后一行记录了root的密码,记录下来
/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3307/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/3307/data# 设置系统环境变量
vim /etc/profile
# 在文件末尾添加下面信息  和java在window中配置系统环境一样
export PATH=/usr/local/mysql/bin:$PATH
#使环境变量生效
source /etc/profile# 启动数据库
# 将路径下文件都授权给mysql
chown -R mysql:mysql /usr/local/mysql
# 启动数据库实例3306、3307
nohup /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3306/my.cnf --user=mysql &
nohup /usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/3307/my.cnf --user=mysql &# 查看MySQL进程状态  可以看到mysql3个进程(root、mysql/3306、mysql/3307)
ps -ef|grep mysql
# 查看端口使用情况   可以看到3306、3307端口被占用
netstat -ntl# 登录3306、3307 mysql服务器
mysql -uroot -h127.0.0.1 -p -P3306
Enter password: 输入上面记录的密码(这里输入时不会展示)

(图示:我的3306、3307进程查看)

image-20231122170855943

(图示:我的3306、3307端口查看)

image-20231122170938750

(图示:在服务器上登录3306数据库)

image-20231122171731309

到这里,服务器上安装就结束了!


3.初始化3306、3307实例、远程连接访问支持

然后执行下面这些初始化数据库配置:

修改root账号的初始密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password';

修改字符集,数据库和服务端默认字符集查看为latin1,不修改会容易出现乱码:

# 查看字符集
show variables like 'character%';
# 修改数据库的字符集(其中mydb为数据库名)
alter database mydb character set 'utf8';
# 修改数据库表的字符集(其中mytbl为表名)
alter table mytbl convert to character set 'utf8';

提供远程访问配置:让远程连接工具如Navicate等能连接到服务器数据库

# 查看MySQL的用户信息  
# host:表示连接类型 user:表示用户名,同一用户通过不同方式链接的权限是不一样的  authentication_string:密码
# 	%:表示所有远程通过 TCP方式的连接 
#   localhost:本地方式通过命令行方式的连接 ,比如mysql -u xxx -p 123xxx 方式的连接。
select host, user, authentication_string from mysql.user;# 看到都是localhost时,不能继续远程连接,所以要修改root用户连接方式为 % 
update user set host = '%' where user = 'root';
# 刷新权限
FLUSH PRIVILEGES; 
# 退出mysql
exit;

image-20231123085047657

检查服务器安全组、防火墙端口是否开放,如果端口不能通过,也不能远程访问:

# 查看防火墙状态
systemctl status firewalld
# 如果不是显示active状态,需要打开防火墙
systemctl start firewalld# 查看所有已开放的临时端口(默认为空)
firewall-cmd --list-ports
# 添加临时开放端口(例如:比如我修改ssh远程连接端口是3306,则需要开放这个端口)
firewall-cmd --add-port=3306/tcp
# 添加永久开放的端口(例如:223端口)
firewall-cmd --add-port=3306/tcp --permanent# 关闭临时端口
# firewall-cmd --remove-port=80/tcp
# 关闭永久端口
# firewll-cmd --remove-port=80/tcp --permanent# 配置结束后需要输入重载命令并重启防火墙以生效配置
firewall-cmd --reload
systemctl restart firewalld# 检查阿里云安全组放行的端口

(图示:防火墙状态查看)

image-20231123090019258

(图示:防火墙放行端口查看)

(图示:阿里云服务器安全组查看)

image-20231123090621882


最后,navicete 连接mysql 3306\3307两个数据库:

image-20231123091020053

image-20231123091042371

到此,所有恭喜你,完成了服务器上搭建2个数据库!!!

在这里插入图片描述

搭建此环境为了操作ShardingJDBC主从复制等操作,后续出详细教程,各位看官敬请关注!


参考文章:

在一台Linux服务器上安装多个MySQL实例(二)–使用单独的MySQL配置文件 - gegeman - 博客园 (cnblogs.com)

推荐文章:

【史上最细教程】MySQL服务器完成主从复制

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给做steam游戏搬砖项目新手小白的5个警示

CSGO搬砖日常出货更新 今天,阿阳要向你们揭秘一个备受瞩目的项目——Steam搬砖项目。或许你们已经听闻过它的名字,但今天我要带领你们深入了解这个项目的本质,为你们揭示五个必须警惕的警示。让我们共同探索这个项目是否适合你们,…

关于「光学神经网络」的一切:理论、应用与发展

/目录/ 一、线性运算的光学实现 1.1. 光学矩阵乘法器 1.2. 光的衍射实现线性运行 1.3. 基于Rayleigh-Sommerfeld方程的实现方法 1.4. 基于傅立叶变换的实现 1.5. 通过光干涉实现线性操作 1.6. 光的散射实现线性运行 1.7. 波分复用(WDM)实现线性运…

OpenAI再次与Sam Altman谈判;ChatGPT Voice正式上线

11月22日,金融时报消息,OpenAI迫于超过700名员工联名信的压力,再次启动了与Sam Altman的谈判,希望他回归董事会。 在Sam确定加入微软后,OpenAI超700名员工签署了一封联名信,要求Sam和Greg Brockman&#x…

Ubuntu 23.10 服务器版本 ifconfig 查不到网卡 ip(已解决)

文章目录 1、问题描述2、 解决方案 1、问题描述 服务器:ubuntu 23.10 经常会遇到虚拟机添加仅主机网卡后,通过 ifconfig 无法获取其网卡 ip 2、 解决方案 修改网卡配置文件: # 进入网卡配置文件目录 cd /etc/netplan # 备份原始文件 cp …

数据库基础入门 — 认识数据库

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…

Delphi 12 Athens 发布了!

官方安装包 ☞ https://altd.embarcadero.com/download/radstudio/12.0/RADStudio_12_0_4915718.iso 安装辅助工具、控件可以戳这里 :Delphi 12 资源 RAD Stuido 12 Athens ,这次更新的细节还是比较多的,但主要还是多端(iOS、An…

AIGC 实践——七鱼客服机器人业务指标波动分析

智能客服机器人的业务指标,最常见的就是解决率,解决率的高低直接关系到客户采购机器人的价值。解决率很高,客户可以省下很多成本开销,如果解决率很低,那么就没有必要采购这个客服机器人。所以,智能客服机器…

洗地机哪个牌子好用?洗地机选购攻略

传统的清洁方式都是扫把拖把的结合,既繁琐也劳累,每次清洁完后还得累的腰酸背痛的,像厨房这种地方甚至会不容易清洁干净,总感觉地板灰蒙蒙的。洗地机的诞生就很好的解决了这些问题,不用一遍遍的重复扫地拖地擦地&#…

Faster R-CNN源码解析(三)

目录 todaytorch.meshgrid()函数 today 今天我们主要来捋一捋AnchorsGenerator这部分代码,对应在network_files文件夹中的rpn_function文件中,从RegionProposalNetwork()类的forward()函数开始看,首先会进入head部分也就是我们看到的RPNHead部分,也就是…

检验LIS系统:医院信息管理的重要组成部分

检验LIS系统源码,云LIS系统源码 云LIS系统是医院信息管理的重要组成部分之一,集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。LIS系统不仅是自动接收检验数据,打印检验报告&#xff0c…

chrome F12 performance 性能分析

本文主要是介绍chrome F12 performance 性能分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧! 页面加载速度慢,到底是多少秒,瓶颈在哪里? 前端性能工具Chrome performance…

OSG动画与声音-动画(3)

动画 动画是一种常见的动画形式(Frame ByFrame),其原理是在连续的关键帧中分解动画动作,从另一个方面来说,也就是在时间轴的每帧上逐顿绘制不同的内容,使其连续播放而形成动画。 因为帧动画的帧序列内容不一样,不但给制…