背景:在自己电脑搭建或测试分布式服务框架时,经常会用多个数据库实例模拟多个环境的情况,因此我把搭建多实例mysql的过程记录下来,方便互相学习和沟通。

1.搭建环境

1) mac 电脑,版本 10.15.6

2) mysql版本  8.0.20

2.搭建过程如下

2.1 步骤

1) 官网下载mysql安装tar包,注意dmg不行

mysql-8.0.20-macos10.15-x86_64.tar.gz

2)解压及创建mysql包路径

```

tar-xfv mysql-8.0.20-macos10.15-x86_64.tar.gz

cp -rf mysql-8.0.20-macos10.15-x86_64/*  /usr/local/mysql8.0/

```

3)创建mysql数据文件存放路径mkdir -p  /usr/local/mysql8.0/{3306,3307,3308,3309}/data

##授权用户组mysql的权限

chown -R mysql:mysql  /usr/local/mysql8.0

##创建日志文件

touch /usr/local/mysql8.0/mysqld_multi.log

4)编辑脚本 my.cnf

vim /etc/my.cnf

###文件内容如下

[mysqld]

user=mysql

basedir =/usr/local/mysql8.0

datadir=/usr/local/mysql8.0/data

[mysqld_multi]

mysqld=/usr/local/mysql8.0/bin/mysqld_safe

mysqladmin=/usr/local/mysql8.0/bin/mysqladmin

log=/usr/local/mysql8.0/mysqld_multi.log

[mysqld3306]

mysqld=mysqld

mysqladmin=mysqladmin

datadir=/usr/local/mysql8.0/3303/data

port=3306

user=mysql

server_id=3306

socket=/tmp/mysql_3306.sock

log-error =/usr/local/mysql8.0/3306/error_3306.log

[mysqld3307]

mysqld=mysqld

mysqladmin=mysqladmin

datadir=/usr/local/mysql8.0/3307/data

port=3307

user=mysql

server_id=3307

socket=/tmp/mysql_3307.sock

log-error =/usr/local/mysql8.0/3307/error_3307.log

[mysqld3308]

mysqld=mysqld

mysqladmin=mysqladmin

datadir=/usr/local/mysql8.0/3308/data

port=3308

user=mysql

server_id=3308

socket=/tmp/mysql_3308.sock

log-error =/usr/local/mysql8.0/3308/error_3308.log

[mysqld3309]

mysqld=mysqld

mysqladmin=mysqladmin

datadir=/usr/local/mysql8.0/3309/data

port=3309

user=mysql

server_id=3309

socket=/tmp/mysql_3309.sock

log-error =/usr/local/mysql8.0/3309/error_3309.log

5)分别初始化3306、3307、3308、3309端口,注意,初始化实例的最后一行记录了root的初始密码

/usr/local/mysql8.0/bin/mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql8.0/ --datadir=/usr/local/mysql8.0/3307/data

/usr/local/mysql8.0/bin/mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql8.0/ --datadir=/usr/local/mysql8.0/3308/data

/usr/local/mysql8.0/bin/mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql8.0/ --datadir=/usr/local/mysql8.0/3309/data

6)设置环境变量

vim ~/.bash_profile

##添加如下配置

export PATH=/usr/local/mysql/bin:$PATH

##生效配置

source  ~/.bash_profile

7) mysql命令创建别名,不然后面这三个命令识别不出来 会报错

alias mysqld=/usr/local/mysql8.0/bin/mysqld

alias mysqld_multi=/usr/local/mysql8.0/bin/mysqld_multi

alias mysqladmin=/usr/local/mysql8/bin/mysqladmin

8) 启动实例

mysqld_multi --defaults-extra-file=/etc/my.cnf --log=/usr/local/mysql8.0/mysqld_multi.log --user=mysql start 3306

mysqld_multi --defaults-extra-file=/etc/my.cnf  --log=/usr/local/mysql8.0/mysqld_multi.log --user=mysql  start 3307

mysqld_multi --defaults-extra-file=/etc/my.cnf  --log=/usr/local/mysql8.0/mysqld_multi.log --user=mysql  start 3308

mysqld_multi --defaults-extra-file=/etc/my.cnf  --log=/usr/local/mysql8.0/mysqld_multi.log --user=mysql  start 3309

9)验证实例

mysqld_multi --defaults-extra-file=/etc/my.cnf report

2.2 修改密码

详见:

##先登录

mysql -u root -p -S /tmp/mysql_3307.sock

##修改密码

ALTER USER USER() IDENTIFIED BY '123456';

exit;

##验证

附录图:

2.3 客户端连接问题

1.出现Authentication plugin 'caching_sha2_password' 错误时,是因登录密码级别设置的高了。

2.解决方法:

1)管理员权限运行命令提示符,登陆MySQL

2)修改账户密码加密规则并更新用户密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;   #修改加密规则

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';   #更新一下用户的密码

3)刷新权限并重置密码

FLUSH PRIVILEGES;   #刷新权限

alter user 'root'@'localhost' identified by '123456'; #再重置下密码

4)现在再次打开Navicat Premium 12连接MySQL问题数据库就会发现可以连接成功了

mac 启动mysql多实例_实践:mysql单机多实例部署(mac)相关推荐

  1. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  2. mysql布隆过滤器_布隆过滤器及其使用实例

    1.什么是布隆过滤器 本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 "某样东西 ...

  3. mysql私房菜_老男孩MySQL私房菜深入浅出精品视频第7章备份与恢复基础实践视频课程...

    2017年06月更新老男孩DBA课程实战视频, 由互联网实战运维架构大牛老男孩主讲! 本视频是老男孩新书<老男孩的MySQL私房菜>的一次公开录制视频! <老男孩的MySQL私房菜& ...

  4. mysql 登录默认实例_【MySQL案例】mysql本机登录-S失灵_mysql

    [mysql案例]mysql本机登录-S失效 1.1.1. mysql本机登录mysql时,-S参数失效 [环境描述] mysql5.5.14 [问题描述] 配置了多实例 实例1 实例2 datadi ...

  5. 添加启动mysql的用户_向mysql添加新用户并分配权限

    首先要声明一点,大部分情况下,修改MySQL是需要有mysql里的root权限的,所以一般用户无法更改密码,除非请求管理员. 方法一 使用phpmyadmin,这是最简单的了,修改mysql库的use ...

  6. mac mysql版本查看_查看mysql的版本号

    1.1 在命令行登录mysql,即可看到mysql的版本号 [root@heyong ~]# mysql -uroot -p Enter password: Welcome to the MySQL ...

  7. mysql悲观群_谈谈mysql的悲观和乐观锁

    悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念.之前有写过一篇文章关于并发的处理思路和解决方案,这里我单独将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍一 ...

  8. 找回mysql root密码_找回MySQL的root密码

    实验介绍:MySQL的root密码丢失,无法登陆.需要重置其root密码 环境介绍:编译安装的MySQL 这篇博客介绍的找回 mysql root 密码是 mysql 基于编译安装的,如果是多实例下的 ...

  9. 32位mysql安装包_《MySQL 入门教程》第 02 篇 MySQL 安装

    文章来源:<MySQL 入门教程>第 02 篇 MySQL 安装 原文作者:不剪发的Tony老师 来源平台:CSDN 上一篇我们了解了什么是MySQL数据库. 本文介绍如何在 Window ...

最新文章

  1. linux装nginx
  2. [转载] 中华典故故事(孙刚)——21 正月剪头死舅舅
  3. python字符串与文本处理技巧(3):字符剔除、字符对齐、字符拼接、字符插入变量
  4. android全局计时_Android定时器AlarmManager
  5. html分级显示的下拉列表,javascript实现在下拉列表中显示多级树形菜单的方法
  6. 纯前端实现人脸识别-提取-合成
  7. node2vec 包安装
  8. 智能指针是一种类,别名称为句柄类
  9. js 日期时间的格式化工具类
  10. 基于微信小程序的网上购物系统的设计与实现.pdf
  11. 基于Echarts的数据可视化大屏系统设计分享
  12. 软件工程实训项目(一)——IDEA连接Mysql数据库
  13. 京东淘宝拼多多自动查券找券搜券返利机器人实现方法分享
  14. 数据结构与算法—二叉排序(查找)树
  15. 完美世界手游服务器维护,完美世界手游更新失败_完美世界手游更新失败解决办法_玩游戏网...
  16. parameterType是必须写的吗?
  17. android输入法剪切板历史记录,讯飞输入法剪切板功能知多少?
  18. 2020 年了,微信公众号还有前途吗?
  19. 物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探
  20. javaweb清除浏览器cookie

热门文章

  1. 直播预告 - 博时基金DevOps体系建设和自动化测试分享
  2. .NET Core跨平台的奥秘[上篇]:历史的枷锁
  3. Catalog Service - 解析微软微服务架构eShopOnContainers(三)
  4. 微软的.NET Core开始支持Raspberry Pi 3
  5. Docker for Windows使用简介
  6. 微软觊觎LinkedIn算法
  7. 如何获取 OSS AccessKeyId、AccessKeySecret
  8. 如何在web api中使用SignalR
  9. C和指针之字符串之实现strcpy函数
  10. LeetCode之Single Number