- MySQL高可用實踐
- 王雪迎
- 1184字
- 2021-03-26 23:06:29
1.2 搭建實驗環境
理解了原理后,在著手配置MySQL異步復制前,先要安裝MySQL數據庫軟件。本節介紹我們的實驗環境以及在此環境中安裝MySQL的具體步驟。
1.2.1 實驗環境說明
1. 主機IP
- 172.16.1.125(主)
- 172.16.1.126(從)
- 172.16.1.127(從)
2. 軟件環境
- OS:CentOS Linux release 7.2.1511 (Core)
- MySQL:MySQL Community Server 8.0.16
- glibc:glibc-2.17-105.el7.x86_64
3. 硬件環境
三臺虛擬機,每臺的基本配置為:
- 雙核雙CPU,Intel(R) Xeon(R) CPU E5-2420 0@1.90GHz
- 8GB物理內存,8GB Swap
- 100GB物理硬盤
1.2.2 安裝MySQL
從https://dev.mysql.com/downloads/mysql/下載二進制安裝文件mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz,相關選項如圖1-5所示。

圖1-5 下載mysql-8.0.16安裝包
然后以root用戶按順序執行下面的命令,在三臺主機上安裝MySQL。
# 進入安裝目錄 cd /usr/local
# 從tar包中提取文件 tar xvf /home/mysql/mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz
# 建立軟鏈接 ln -s mysql-8.0.16-linux-glibc2.12-x86_64 mysql
# 進入mysql目錄 cd mysql
# 建立secure_file_priv系統變量指向的目錄 mkdir mysql-files
# 修改屬主為mysql chown mysql:mysql mysql-files
# 修改目錄權限 chmod 750 mysql-files
# mysql系統初始化 bin/mysqld --initialize --user=mysql
# 建立SSL/RSA相關文件,如果不啟用SSL連接,此步可省略 bin/mysql_ssl_rsa_setup
# 啟動mysql服務器 bin/mysqld_safe --user=mysql &
# 連接mysql服務器 bin/mysql -u root -p
-- 修改root密碼 alter user user() identified by "123456";
-- 創建一個新的mysql管理員賬號 create user 'wxy'@'%' identified with mysql_native_password by '123456'; grant all on *.* to 'wxy'@'%' with grant option;
命令說明:
(1)mysql-files目錄用作secure_file_priv系統變量的值。該變量將導入和導出操作限制到特定目錄。例如由LOAD DATA、SELECT... INTO OUTFILE語句和LOAD_FILE()函數所執行的操作,僅允許具有FILE權限的用戶執行這些操作。secure_file_priv系統變量設置如下:
- 空字符串:變量不起作用,是不安全的設置。
- 目錄名:MySQL限制導入和導出操作僅用于該目錄中的文件。目錄必須已經存在,MySQL不會創建它。
- NULL:MySQL禁用導入和導出操作。
(2)mysqld --initialize命令創建默認數據庫并退出。在過程中會創建一個超級用戶'root'@'localhost',并為該用戶生成一個隨機密碼。命令執行輸出如下所示:

MySQL文檔中說產生的臨時密碼會寫到.err日志文件里,但在本次安裝中,這一步并沒有生成.err文件。安全的做法還是記下臨時密碼,因為在initialize情況下,臨時密碼默認標記為已過期,用戶必須在第一次進入MySQL后首先修改root用戶的密碼。
(3)mysql_ssl_rsa_setup程序將創建SSL證書和密鑰文件,以及創建使用SSL進行安全連接所需的RSA密鑰對文件。如果現有的SSL文件已過期,mysql_ssl_rsa_setup也可用于創建新的SSL文件。mysql_ssl_rsa_setup使用openssl命令,因此主機上必須安裝有OpenSSL。mysql_ssl_rsa_setup檢查數據目錄中的以下SSL文件:
ca.pem server-cert.pem server-key.pem
只要存在這些文件之一,則mysql_ssl_rsa_setup不會創建任何SSL文件。否則,它會調用openssl來創建它們以及一些其他文件。啟用SSL安全客戶端連接時需要這些文件:

之后mysql_ssl_rsa_setup檢查數據目錄中的以下RSA文件:

只要存在這些文件之一,則mysql_ssl_rsa_setup不會創建任何RSA文件。否則,它會調用openssl來創建它們。對于sha256_password或caching_sha2_password插件驗證的賬戶不加密連接時,通過這些文件使用RSA進行安全密碼交換。
mysql-8.0.16默認支持SSL加密連接:

(4)第一次進入MySQL后,執行任何命令都會報出以下錯誤:

提示很明顯,需要修改初始化時為用戶'root'@'localhost'生成的臨時密碼。MySQL 8默認使用的認證插件是caching_sha2_password:

當用舊版本的MySQL客戶端連接MySQL 8服務器時,可能報出以下錯誤:

可以使用兩種方法解決此問題:第一種方法是在配置文件中設置default_authentication_plugin='mysql_native_password',然后重啟MySQL服務器使之生效。default_authentication_plugin是只讀系統變量,不能動態修改;第二種方法是在創建用戶時,使用兼容新舊版本的認證方式,例如:
create user 'wxy'@'%' identified with mysql_native_password by '123456';
通過以下查詢可以得到用戶所對應的認證插件:

- 程序員面試筆試寶典(第3版)
- GitLab Cookbook
- 大學計算機應用基礎實踐教程
- 零基礎學C++程序設計
- Python機器學習:數據分析與評分卡建模(微課版)
- Machine Learning with R Cookbook(Second Edition)
- 機器人Python青少年編程開發實例
- Java程序設計與計算思維
- 程序員修煉之道:通向務實的最高境界(第2版)
- Instant Nancy Web Development
- Mastering Xamarin.Forms(Second Edition)
- C# Multithreaded and Parallel Programming
- C語言程序設計簡明教程:Qt實戰
- FPGA嵌入式項目開發實戰
- 工業機器人離線編程