单机多实例部署 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 时间类型的选择
Jun 05 MySQL
MySQL 亿级数据导入导出及迁移笔记
Jun 18 MySQL
MySQL里面的子查询的基本使用
Aug 02 MySQL
mysql函数全面总结
Nov 11 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
MYSQL常用函数介绍
May 05 MySQL
SQLServer常见数学函数梳理总结
Aug 05 MySQL
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
May 08 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
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
css把超出的部分显示为省略号的方法兼容火狐
2008/07/23 Javascript
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
JavaScript中的排序算法代码
2011/02/22 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
jquery 查找select ,并触发事件的实现代码
2011/03/30 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
Python Sleep休眠函数使用简单实例
2015/02/02 Python
python if not in 多条件判断代码
2016/09/21 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
Python下使用Scrapy爬取网页内容的实例
2018/05/21 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
Python自定义一个异常类的方法
2019/06/27 Python
Python统计学一数据的概括性度量详解
2020/03/03 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
Noon埃及:埃及在线购物
2019/11/26 全球购物
光声世纪笔试题目
2012/08/25 面试题
大学生的创业计划书就该这么写
2014/01/30 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书