单机多实例部署 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 相关文章推荐
数据库连接池
Apr 06 MySQL
mysql的MVCC多版本并发控制的实现
Apr 14 MySQL
详细谈谈MYSQL中的COLLATE是什么
Jun 11 MySQL
新手入门Mysql--sql执行过程
Jun 20 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
SQL之各种join小结详细讲解
Aug 04 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
Nov 27 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
MySQL创建表操作命令分享
Mar 25 MySQL
MySQL学习必备条件查询数据
Mar 25 MySQL
MySQL 执行数据库更新update操作的时候数据库卡死了
May 02 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
Jul 15 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
一个显示天气预报的程序
2006/10/09 PHP
ThinkPHP采用模块和操作分析
2011/04/18 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
浅析php创建者模式
2014/11/25 PHP
为你总结一些php信息函数
2015/10/21 PHP
PHP模板引擎Smarty自定义变量调解器用法
2016/04/11 PHP
UserData用法总结 lanyu出品
2010/07/01 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
Python中字符串的修改及传参详解
2016/11/30 Python
详解python3实现的web端json通信协议
2016/12/29 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
python3爬虫怎样构建请求header
2018/12/23 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
如何用python免费看美剧
2020/08/11 Python
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
南京软件公司的.net程序员笔试题
2014/08/31 面试题
通信专业个人自我鉴定
2013/10/21 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
详解Spring事件发布与监听机制
2021/06/30 Java/Android
Java完整实现记事本代码
2022/06/16 Java/Android