CentOS7系統(tǒng)下部署MySQL 5.7.34服務(wù)全過程
使用普通用戶 部署 MySQL 5.7.34 服務(wù)全過程
在企業(yè)級(jí) Linux 服務(wù)器中,出于最小權(quán)限原則(Least Privilege Principle),不建議直接使用 root 用戶運(yùn)行數(shù)據(jù)庫服務(wù)。這不僅可以降低誤操作風(fēng)險(xiǎn),也方便后續(xù)進(jìn)行權(quán)限審計(jì)、容器化遷移、安全加固等操作。
本文將介紹如何通過普通用戶 test
在 CentOS 7 系統(tǒng)下部署 MySQL 5.7.34,適用于中小型服務(wù)部署、開發(fā)測試環(huán)境以及基于裸機(jī)的數(shù)據(jù)庫初始化場景。
最終目錄結(jié)構(gòu)示意
/data/
├── app/
│ └── mysql/ # 安裝目錄
│ ├── bin/ # 可執(zhí)行文件
│ ├── data/ # 數(shù)據(jù)目錄
│ ├── log/ # 日志目錄
│ └── my.cnf # 配置文件
│ └── mysqld.sh # 啟動(dòng)腳本
│ └── ...... # 其他文件
├── bag/
└── mysql/ # 存放壓縮包
[test@mmm mysql]$ pwd /data/app/mysql [test@mmm mysql]$ ls bin data docs include lib LICENSE log man my.cnf mysqld.sh README share support-files [test@mmm mysql]$ ll total 288 drwxrwxr-x 2 test test 4096 Mar 6 09:54 bin drwxrwxr-x 10 test test 4096 Mar 6 21:20 data drwxrwxr-x 2 test test 55 Mar 6 09:26 docs drwxrwxr-x 3 test test 4096 Mar 6 09:26 include drwxrwxr-x 5 test test 230 Mar 6 09:26 lib -rw-r--r-- 1 test test 257591 Mar 26 2021 LICENSE drwxrwxr-x 2 test test 29 Mar 6 09:35 log drwxrwxr-x 4 test test 30 Mar 6 09:26 man -rw-rw-r-- 1 test test 1469 Mar 6 09:34 my.cnf -rwxr-xr-x 1 test test 10585 Mar 6 09:49 mysqld.sh -rw-r--r-- 1 test test 566 Mar 26 2021 README drwxrwxr-x 28 test test 4096 Mar 6 09:26 share drwxrwxr-x 2 test test 90 Mar 6 09:43 support-files [test@mmm mysql]$
創(chuàng)建 test 用戶并賦予 sudo 權(quán)限
操作用戶:root
# 創(chuàng)建 test 用戶,指定家目錄和 bash 作為默認(rèn) shell adduser -m -d /home/test -s /bin/bash test # 設(shè)置 test 用戶密碼(此處密碼為 test123456.) echo "test:test123456." | sudo chpasswd # 將 test 用戶加入 wheel 組以獲取 sudo 權(quán)限 usermod -aG wheel test # 查看用戶組信息確認(rèn)是否添加成功 groups test
切換至 test 用戶并準(zhǔn)備部署目錄
# 切換到 test 用戶 su - test # 進(jìn)入數(shù)據(jù)目錄 cd /data # 確認(rèn)是否有寫權(quán)限 ll /data # 若無權(quán)限,使用 sudo 賦權(quán) sudo chmod u+w /data sudo chown -R test:test /data # 創(chuàng)建 MySQL 安裝與數(shù)據(jù)目錄 mkdir -p /data/app
準(zhǔn)備 MySQL 安裝包并解壓
# 假設(shè)安裝包已上傳至 /data/bag/mysql cd /data/bag/mysql # 解壓 MySQL 5.7 安裝包 tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz # 移動(dòng)解壓后的內(nèi)容到指定安裝目錄 mv mysql-5.7.34-linux-glibc2.12-x86_64/* /data/app/mysql
安裝必要依賴包
# 安裝 libaio 和 numactl 是 MySQL 正常運(yùn)行的前提 sudo yum -y install libaio sudo yum -y install numactl
配置 my.cnf 配置文件
在 /data/app/mysql
下新建或編輯 my.cnf
文件:
cd /data/app/mysql vim my.cnf
示例配置內(nèi)容(可根據(jù)實(shí)際情況調(diào)整):
[mysql] # 設(shè)置mysql客戶端默認(rèn)字符集 default-character-set=utf8 socket=/data/app/mysql/mysql.sock [mysqld] # 用戶 user=test skip_ssl skip-name-resolve #設(shè)置3306端口 port = 3306 expire_logs_days = 10 max_binlog_size = 500M # 設(shè)置mysql的安裝目錄 basedir=/data/app/mysql # 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄 datadir=/data/app/mysql/data # 服務(wù)端使用的字符集默認(rèn)為8比特編碼的latin1字符集 character-set-server=utf8 # 創(chuàng)建新表時(shí)將使用的默認(rèn)存儲(chǔ)引擎 default-storage-engine=INNODB max_allowed_packet=16M key_buffer_size=32MB # innodb參數(shù) innodb_buffer_pool_size=512MB innodb_buffer_pool_dump_at_shutdown=1 #該命令用于在關(guān)閉時(shí)把熱數(shù)據(jù)dump到本地磁盤 innodb_buffer_pool_load_at_startup=1 #在啟動(dòng)時(shí)把熱數(shù)據(jù)加載到內(nèi)存 #避免雙寫緩沖的參數(shù): innodb_flush_method=O_DIRECT innodb_lock_wait_timeout=50 # 鎖等待超時(shí)時(shí)間 單位秒 #啟用標(biāo)準(zhǔn)InnoDB監(jiān)視器 innodb_status_output=ON # 查詢緩存 #開啟慢查詢?nèi)罩荆? slow_query_log=1 slow_query_log_file=master.slow long_query_time=2 #配置錯(cuò)誤日志: log-error=/data/app/mysql/log/mysql_error.log # 復(fù)制的參數(shù) log_bin=master-bin server_id=10 binlog_format=ROW sync_binlog=1 sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION # 啟用gtid復(fù)制: gtid_mode=ON enforce-gtid-consistency=true max_connections = 1000 max_connect_errors = 1000 wait_timeout = 30 innodb_log_file_size=1500M
常見參數(shù)說明
參數(shù)名 | 示例值 | 說明 |
---|---|---|
basedir | /data/app/mysql | MySQL 的安裝目錄(即解壓后的主目錄) |
datadir | /data/app/mysql/data | 數(shù)據(jù)庫的數(shù)據(jù)文件存放路徑 |
port | 3306 | MySQL 服務(wù)監(jiān)聽端口,默認(rèn)是 3306 |
user | test | 啟動(dòng) mysqld 進(jìn)程的用戶,需具有寫權(quán)限 |
socket | /data/app/mysql/mysql.sock | MySQL 客戶端與服務(wù)器端通信使用的套接字文件 |
log-error | /data/app/mysql/log/mysql_error.log | 錯(cuò)誤日志輸出路徑 |
character-set-server | utf8 / utf8mb4 | 設(shè)置默認(rèn)字符集,推薦使用 utf8mb4 支持表情符等 |
default-storage-engine | INNODB | 默認(rèn)存儲(chǔ)引擎 |
innodb_buffer_pool_size | 512MB | InnoDB 數(shù)據(jù)緩沖池大小,建議設(shè)置為物理內(nèi)存的 50%-80% |
slow_query_log | 1 | 開啟慢查詢?nèi)罩竟δ?/td> |
slow_query_log_file | master.slow | 慢查詢?nèi)罩疚募Q |
long_query_time | 2 | 定義慢查詢的閾值(單位:秒) |
log_bin | master-bin | 啟用二進(jìn)制日志功能,主從復(fù)制時(shí)必須開啟 |
server_id | 10 | 實(shí)例 ID,用于主從復(fù)制標(biāo)識(shí)(每個(gè)實(shí)例唯一) |
binlog_format | ROW | binlog 格式,推薦使用 ROW |
gtid_mode | ON | 啟用 GTID 模式,方便主從同步管理 |
enforce-gtid-consistency | true | 強(qiáng)制 GTID 一致性,GTID 模式下建議啟用 |
sql_mode | NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | SQL 模式,控制語法與行為兼容性 |
max_connections | 1000 | 最大并發(fā)連接數(shù) |
max_connect_errors | 1000 | 最大連接失敗次數(shù) |
wait_timeout | 30 | 空閑連接超時(shí)時(shí)間(單位:秒) |
innodb_log_file_size | 1500M | InnoDB 重做日志文件大小 |
sync_binlog | 1 | 每次事務(wù)提交都同步寫 binlog,提升數(shù)據(jù)安全性 |
初始化數(shù)據(jù)庫
# 創(chuàng)建數(shù)據(jù)目錄和日志文件 cd /data/app/mysql mkdir -p data log touch log/mysql_error.log # 初始化數(shù)據(jù)庫 cd bin ./mysqld --defaults-file=/data/app/mysql/my.cnf --initialize --user=test --basedir=/data/app/mysql/ --datadir=/data/app/mysql/data/
注意:初始化成功后,log/mysql_error.log
中會(huì)包含 root 用戶的臨時(shí)密碼。
配置啟動(dòng)腳本并設(shè)置環(huán)境變量
# 回到主目錄 cd /data/app/mysql # 復(fù)制默認(rèn)啟動(dòng)腳本并重命名 cp support-files/mysql.server ./mysqld.sh ################################### # 修改啟動(dòng)腳本內(nèi)容(可根據(jù)需求調(diào)整basedir、datadir、conf等) 46 basedir=/data/app/mysql/ 47 datadir=/data/app/mysql/data/ 206 conf=/data/app/mysql/my.cnf ################################### # 添加 MySQL bin 路徑至環(huán)境變量 echo 'export PATH=/data/app/mysql/bin:$PATH' >> ~/.bashrc source ~/.bashrc
啟動(dòng) MySQL 服務(wù)并測試連接
# 啟動(dòng) MySQL ./mysqld.sh start # 查看運(yùn)行狀態(tài) ./mysqld.sh status ps -ef | grep mysql netstat -nltp | grep 3306 # 登錄測試(使用初始化生成的密碼或修改后的密碼) mysql -u root -p
或:
# 若你已設(shè)置新密碼: mysql -u root -p'test123456.'
常用操作總結(jié)
# 停止 MySQL 服務(wù) ./mysqld.sh stop # 重啟 MySQL 服務(wù) ./mysqld.sh restart # 查看 MySQL 日志 cat /data/app/mysql/log/mysql_error.log
注意事項(xiàng)
- 非 root 用戶安裝需保證目錄權(quán)限正確;
--initialize
只運(yùn)行一次,否則會(huì)清空已有數(shù)據(jù);my.cnf
配置文件中路徑需確保存在;- 若啟動(dòng)失敗,優(yōu)先查看
mysql_error.log
; mysqld.sh
腳本可考慮寫入 systemd 或 crontab 啟動(dòng);
結(jié)語
通過以上步驟,我們成功使用普通用戶 test
完成了 MySQL 5.7.34 的部署。這種方式不僅提升了安全性,也為后續(xù)自動(dòng)化部署和多用戶運(yùn)維打下了基礎(chǔ)。
到此這篇關(guān)于CentOS7系統(tǒng)下部署MySQL 5.7.34服務(wù)全過程的文章就介紹到這了,更多相關(guān)MySQL 5.7.34部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Linux中使用MD5實(shí)現(xiàn)用戶驗(yàn)證的解決方法
本篇文章小編為大家介紹,在Linux中使用MD5實(shí)現(xiàn)用戶驗(yàn)證的解決方法。需要的朋友參考下2013-04-04linux php-cgi.exe占用cpu 100%的一次排障之旅
這篇文章主要介紹了linux php-cgi.exe占用cpu 100%的一次排障之旅,需要的朋友可以參考下2016-09-09Linux環(huán)境變量&&進(jìn)程地址空間詳解
本文介紹了Linux環(huán)境變量、命令行參數(shù)、進(jìn)程地址空間以及Linux內(nèi)核進(jìn)程調(diào)度隊(duì)列的相關(guān)知識(shí),環(huán)境變量是系統(tǒng)運(yùn)行環(huán)境的參數(shù),命令行參數(shù)用于傳遞給程序的參數(shù),進(jìn)程地址空間是進(jìn)程的虛擬內(nèi)存區(qū)域,而Linux內(nèi)核進(jìn)程調(diào)度隊(duì)列是進(jìn)程調(diào)度的核心數(shù)據(jù)結(jié)構(gòu)2025-02-02vsftp上傳553 Could not create file錯(cuò)誤解決
本篇文章給大家分享了在vsftp上傳文件的時(shí)候出現(xiàn)了553 Could not create file錯(cuò)誤,針對(duì)這個(gè)錯(cuò)誤我們給出了解決辦法,一起學(xué)習(xí)下。2017-12-12iis、apache與nginx禁止目錄執(zhí)行asp、php腳本的實(shí)現(xiàn)方法
為了網(wǎng)站安全,很多圖片上傳目錄等不需要執(zhí)行腳本的目錄我們可以通過下面的方法禁止執(zhí)行腳本。2011-11-11