单机多实例部署 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 14 MySQL
浅谈Mysql多表连接查询的执行细节
Apr 24 MySQL
MySQL连表查询分组去重的实现示例
Jul 01 MySQL
MYSQL 的10大经典优化案例场景实战
Sep 14 MySQL
MySQL into_Mysql中replace与replace into用法案例详解
Sep 14 MySQL
一次MySQL启动导致的事故实战记录
Sep 15 MySQL
MySQL定时备份数据库(全库备份)的实现
Sep 25 MySQL
一文弄懂MySQL中redo log与binlog的区别
Feb 15 MySQL
解决MySQL添加新用户-ERROR 1045 (28000)的问题
Mar 03 MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 MySQL
MySQL 原理优化之Group By的优化技巧
Aug 14 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
PHP 压缩文件夹的类代码
2009/11/05 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
2016/08/28 PHP
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
js实现密码强度检验
2017/01/15 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
python 根据pid杀死相应进程的方法
2017/01/16 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
python购物车程序简单代码
2018/04/18 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
Django框架封装外部函数示例
2019/05/28 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
以下的初始化有什么区别
2013/12/16 面试题
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
保险专业自荐信范文
2014/02/20 职场文书
婚礼新人答谢词
2015/01/04 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
《三国志》赏析
2019/08/27 职场文书
MySQL 开窗函数
2022/02/15 MySQL