背景:在自己電腦搭建或測(cè)試分布式服務(wù)框架時(shí),經(jīng)常會(huì)用多個(gè)數(shù)據(jù)庫(kù)實(shí)例模擬多個(gè)環(huán)境的情況,因此我把搭建多實(shí)例mysql的過(guò)程記錄下來(lái),方便互相學(xué)習(xí)和溝通。
1.搭建環(huán)境
1) mac 電腦,版本?10.15.6
2) mysql版本??8.0.20
官網(wǎng)下載:https://downloads.mysql.com/archives/community/
2.搭建過(guò)程如下
2.1 步驟
1) 官網(wǎng)下載mysql安裝tar包,注意dmg不行
mysql-8.0.20-macos10.15-x86_64.tar.gz
2)解壓及創(chuàng)建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)創(chuàng)建mysql數(shù)據(jù)文件存放路徑
mkdir -p??/usr/local/mysql8.0/{3306,3307,3308,3309}/data
##授權(quán)用戶(hù)組mysql的權(quán)限
chown -R mysql:mysql??/usr/local/mysql8.0
##創(chuàng)建日志文件
touch /usr/local/mysql8.0/mysqld_multi.log
4)編輯腳本?my.cnf
vim /etc/my.cnf
###文件內(nèi)容如下
[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端口,注意,初始化實(shí)例的最后一行記錄了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)設(shè)置環(huán)境變量
vim ~/.bash_profile
##添加如下配置
export PATH=/usr/local/mysql/bin:$PATH
##生效配置
source??~/.bash_profile
7) mysql命令創(chuàng)建別名,不然后面這三個(gè)命令識(shí)別不出來(lái) 會(huì)報(bào)錯(cuò)
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) 啟動(dòng)實(shí)例
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)驗(yàn)證實(shí)例
mysqld_multi --defaults-extra-file=/etc/my.cnf report

2.2 修改密碼
詳見(jiàn):
https://blog.csdn.net/lkr_lkr/article/details/105931513
##先登錄
mysql -u root -p -S /tmp/mysql_3307.sock
##修改密碼
ALTER USER USER() IDENTIFIED BY '123456';
exit;
##驗(yàn)證
附錄圖:

2.3 客戶(hù)端連接問(wèn)題
1.出現(xiàn)Authentication plugin 'caching_sha2_password' 錯(cuò)誤時(shí),是因登錄密碼級(jí)別設(shè)置的高了。

2.解決方法:
1)管理員權(quán)限運(yùn)行命令提示符,登陸MySQL
2)修改賬戶(hù)密碼加密規(guī)則并更新用戶(hù)密碼
? ?ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;? ?#修改加密規(guī)則?
? ?ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';? ?#更新一下用戶(hù)的密碼?
3)刷新權(quán)限并重置密碼
? ?FLUSH PRIVILEGES;? ?#刷新權(quán)限?
? alter user 'root'@'localhost' identified by '123456'; #再重置下密碼
4)現(xiàn)在再次打開(kāi)Navicat Premium 12連接MySQL問(wèn)題數(shù)據(jù)庫(kù)就會(huì)發(fā)現(xiàn)可以連接成功了
詳見(jiàn):https://blog.csdn.net/u011182575/article/details/80821418