单机多实例部署 MySQL8.0.20


Posted in MySQL onMay 15, 2022

0.环境需要

1.准备Linux环境(系统:CentOS7)
2.准备MySQL安装包(版本:8.0.20)
3.安装方式为:msyql解压安装

1.安装步骤

1.下载解压安装的mysql安装包文件

下载地址:https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.20-el7-x86_64.tar.gz

2.上传解压缩(我这里的上传为:xhell,当然也可使用其他方式)

## 创建mysql目录
mkdir -p /usr/app/mysql
## 移动到目录下
cd /usr/app/mysql
## 使用xhell上传文件到服务器
## 解压后重命名
tar -zxvf mysql-8.0.20-el7-x86_64.tar.gz
mv mysql-8.0.20-el7-x86_64 mysql-8.0

3.在mysql目录创建创建数据文件存放路径并赋权

## 创建各实例数据存放目录
mkdir -p /usr/app/mysql/mysql-8.0/{3306,3307,3308}/data
## 创建各个mysql对应error日志
mkdir -p /usr/app/mysql/mysql-8.0/{3306,3307,3308}/log
touch /usr/app/mysql/mysql-8.0/3306/log/error.log
touch /usr/app/mysql/mysql-8.0/3307/log/error.log
touch /usr/app/mysql/mysql-8.0/3308/log/error.log
## 创建mysql用户组及用户
groupadd mysql
useradd -g mysql mysql
## 目录归属赋权
chown -R mysql:mysql /usr/app/mysql

4.配置my.cnf文件

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[client]
default-character-set=utf8mb4

[mysqld]
user=mysql
basedir=/usr/app/mysql/mysql-8.0
lower_case_table_names=1

[mysqld_multi]
mysqld=/usr/app/mysql/mysql-8.0/bin/mysqld_safe
mysqladmin=/usr/app/mysql/mysql-8.0/bin/mysqladmin
log=/usr/app/mysql/mysql-8.0/mysqld_multi.log

# 3306 数据库实例
[mysqld3306]
port=3306
server_id=1
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/usr/app/mysql/mysql-8.0/3306/data
socket=/tmp/mysql_3306.sock
log-error=/usr/app/mysql/mysql-8.0/3306/log/error.log
pid-file=/usr/app/mysql/mysql-8.0/3306/mysql3306.pid

## skip-grant-tables #用于跳过密码登录
character_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'
lower_case_table_names=1
explicit_defaults_for_timestamp=true


# 3307 数据库实例
[mysqld3307]
port=3307
server_id=2
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/usr/app/mysql/mysql-8.0/3307/data
socket=/tmp/mysql_3307.sock
log-error=/usr/app/mysql/mysql-8.0/3307/log/error.log
pid-file=/usr/app/mysql/mysql-8.0/3307/mysql3307.pid
# lc_messages_dir=/usr/local/mysql/share/english

## 默认最大连接数设置
# max_connections=300
character_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'
lower_case_table_names=1
explicit_defaults_for_timestamp=true

# 3308 数据库实例
[mysqld3308]
port=3308
server_id=3
mysqld=mysqld
mysqladmin=mysqladmin
datadir=/usr/app/mysql/mysql-8.0/3308/data
socket=/tmp/mysql_3308.sock
log-error=/usr/app/mysql/mysql-8.0/3308/log/error.log
pid-file=/usr/app/mysql/mysql-8.0/3308/mysql3308.pid
# lc_messages_dir=/usr/local/mysql/share/english

character_set_server=utf8mb4
init_connect='SET NAMES utf8mb4'
lower_case_table_names=1
explicit_defaults_for_timestamp=true

5.初始化各实例数据库

/usr/app/mysql/mysql-8.0/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/usr/app/mysql/mysql-8.0/3306/data/ --initialize
/usr/app/mysql/mysql-8.0/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/usr/app/mysql/mysql-8.0/3307/data/ --initialize
/usr/app/mysql/mysql-8.0/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/usr/app/mysql/mysql-8.0/3308/data/ --initialize

注意记住临时密码,后面登录时使用,例如:

2022-04-04T15:12:39.011998Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: sJH):ayhH5cW
2022-04-04T15:14:24.214337Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: <>y)qhyh/4E7
2022-04-04T15:15:32.283026Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: s7qrjzwqI<wd

6.设置msyql环境变量

添加了环境变量,操作系统才能够自己找到mysql、mysqld_multi等命令的位置

## 在/etc/profile 文件末尾添加
export PATH=/usr/app/mysql/mysql-8.0/bin:$PATH

## 使环境变量生效
source /etc/profile

7.启动与查看 mysql 服务(需指定配置文件)

## 启动mysql
mysqld_multi --defaults-file=/etc/my.cnf start 3306
mysqld_multi --defaults-file=/etc/my.cnf start 3307
mysqld_multi --defaults-file=/etc/my.cnf start 3308

## 查看mysql服务
mysqld_multi --defaults-file=/etc/my.cnf report

启动不成功,查看 mysqld_multi.log 日志或各实例目录下的错误日志

cat /usr/app/mysql/mysql-8.0/mysqld_multi.log
cat /usr/app/mysql/mysql-8.0/3306/log/error.log

8.设置远程访问密码

## 服务器登录 (注意:另外两个实例同样如此。)
mysql -uroot -p -S /tmp/mysql_3306.sock
## 输入上面初始化数据库时的临时密码

## 设置本地访问密码,例如:Mysql@123,注意密码为高安保等级(例如大小写和特殊字符的组合),不然无法使用其他操作
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql@123';
## 进入mysql数据
use mysql;
## 更新root信息
update user set host='%' where user='root';
## 刷新
flush privileges;
# 授权root用户可以远程登陆
GRANT ALL ON *.* TO 'root'@'%';
## 远程连接设置
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Mysql@123';
## 刷新
flush privileges;

9.防火墙开启访问端口(获取关闭防火墙)

## 开放防火墙端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=3307/tcp --permanent
firewall-cmd --zone=public --add-port=3308/tcp --permanent

## 查看开放端口
firewall-cmd --list-port

## 配置生效
firewall-cmd --reload

然后就可以外部访问了,以上就是我的MySQL8.0单机多实例安装步骤采坑记录。

到此这篇关于MySQL8.0.20单机多实例部署步骤的文章就介绍到这了,更多相关MySQL 单机多实例内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql多表查询-笔记七
Apr 05 MySQL
MySQL Shell的介绍以及安装
Apr 24 MySQL
MySQL数据迁移相关总结
Apr 29 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
新手入门Mysql--概念
Jun 18 MySQL
为什么代码规范要求SQL语句不要过多的join
Jun 23 MySQL
浅析MySQL如何实现事务隔离
Jun 26 MySQL
解决Mysql的left join无效及使用的注意事项说明
Jul 01 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
Mysql查询时间区间日期列表,不会由于数据表数据影响
Apr 19 MySQL
MySQL中EXPLAIN语句及用法
May 20 MySQL
MySQL中的全表扫描和索引树扫描
MySQL sql模式设置引起的问题
May 15 #MySQL
MySQL 逻辑备份 into outfile
May 15 #MySQL
Mysql开启外网访问
May 15 #MySQL
Mysql索引失效 数据库表中有索引还是查询很慢
MySQL查询日期时间
May 15 #MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 #MySQL
You might like
mysql 全文搜索 技巧
2007/04/27 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
php常用图片处理类
2016/03/16 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
javascript脚本编程解决考试分数统计问题
2008/10/18 Javascript
Web开发之JavaScript
2012/03/29 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
Python SQLite3简介
2018/02/22 Python
python如何读写json数据
2018/03/21 Python
python实现自动发送报警监控邮件
2018/06/21 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python add_argument()用法解析
2020/01/29 Python
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
2013/01/30 HTML / CSS
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
高级运动鞋:GREATS
2019/07/19 全球购物
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
电子商务网站的创业计划书
2014/01/05 职场文书
劳动之星获奖感言
2014/02/01 职场文书
历史学专业求职信
2014/06/19 职场文书
应届生自荐书
2014/06/23 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL