在linux系統(tǒng)中使用通用包安裝Mysql的步驟
一、Linux 通用包安裝 MySQL
1、下載并校驗(yàn)安裝包(以 8.0.33 為例,建議校驗(yàn) sha256)
https://downloads.mysql.com/archives/community/

cd /data wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz. # 可選:校驗(yàn) sha256(從官網(wǎng)下載頁(yè)復(fù)制對(duì)應(yīng)校驗(yàn)值) # sha256sum mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
2、解壓并放置到統(tǒng)一目錄(統(tǒng)一使用 /usr/local/mysql8)
tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz -C /usr/local ln -s /usr/local/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql8
3、創(chuàng)建 mysql 用戶與數(shù)據(jù)目錄
groupadd -r mysql useradd -r -g mysql -s /sbin/nologin -d /usr/local/mysql8 mysql
4、創(chuàng)建 data 數(shù)據(jù)存儲(chǔ)目錄
mkdir -p /usr/local/mysql8/data /usr/local/mysql8/log
5、授權(quán)mysql用戶
chown -R mysql.mysql /data/mysql8/
6、初始化數(shù)據(jù)庫(kù)
這里需要記住初始密碼
/usr/local/mysql8/bin/mysqld --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data/ --initialize --lower-case-table-names=1

7、安裝為系統(tǒng)服務(wù)(systemd,推薦)
cp /usr/local/mysql8/support-files/mysql.server /etc/systemd/system/mysqld.service systemctl daemon-reload systemctl enable --now mysqld
8、基本配置文件(/etc/my.cnf)
[mysqld] # 目錄 basedir=/usr/local/mysql8 datadir=/usr/local/mysql8/data socket=/usr/local/mysql8/mysql.sock log-error=/usr/local/mysql8/log/mysqld.log pid-file=/usr/local/mysql8/log/mysqld.pid # 端口 port=3306 # 字符集與排序規(guī)則 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-character-set-client-handshake # InnoDB default-storage-engine=INNODB innodb_buffer_pool_size=1G innodb_log_file_size=256M innodb_flush_method=O_DIRECT innodb_file_per_table=ON innodb_flush_log_at_trx_commit=1 sync_binlog=1 # 連接與安全 max_connections=200 skip-name-resolve default_authentication_plugin=mysql_native_password # 嚴(yán)格模式與 SQL 模式 sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,ONLY_FULL_GROUP_BY [client] socket=/usr/local/mysql8/mysql.sock default-character-set=utf8mb4 [mysql] prompt="\\u@\\h [\\d]> " no-auto-rehash
9、啟動(dòng)與驗(yàn)證
systemctl restart mysqld systemctl status mysqld # 首次登錄(使用初始化時(shí)記錄的臨時(shí)密碼) /usr/local/mysql8/bin/mysql -uroot -p
10、首次登錄后的安全設(shè)置(在 mysql 客戶端內(nèi)執(zhí)行)
-- 1) 修改 root 本地密碼(滿足策略) ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourP@ssw0rd'; FLUSH PRIVILEGES; -- 2) 安全基線(刪除匿名、禁止遠(yuǎn)程 root、刪測(cè)試庫(kù)、驗(yàn)證密碼) DELETE FROM mysql.user WHERE User=''; DROP DATABASE IF EXISTS test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourP@ssw0rd'; -- 如需本機(jī)應(yīng)用以 root 連接,可添加: -- CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'YourP@ssw0rd'; -- GRANT ALL ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION; -- FLUSH PRIVILEGES; -- 3) 創(chuàng)建應(yīng)用用戶(示例,按需調(diào)整權(quán)限與來源) CREATE USER 'app'@'10.0.0.%' IDENTIFIED WITH mysql_native_password BY 'AppP@ssw0rd_456!'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON appdb.* TO 'app'@'10.0.0.%'; FLUSH PRIVILEGES;
11、開放遠(yuǎn)程訪問(可選,謹(jǐn)慎)
# 僅在確有需要時(shí)創(chuàng)建遠(yuǎn)程用戶,并限制來源網(wǎng)段 /usr/local/mysql8/bin/mysql -uroot -p -e " CREATE USER 'app'@'10.0.0.%' IDENTIFIED WITH mysql_native_password BY 'AppStrongP@ssw0rd_456!'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON appdb.* TO 'app'@'10.0.0.%'; FLUSH PRIVILEGES;" # 系統(tǒng)防火墻(CentOS/RHEL) firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="3306" accept' firewall-cmd --reload # Ubuntu/Debian # sudo ufw allow from 10.0.0.0/24 to any port 3306 proto tcp
12、常用維護(hù)命令
# 查看狀態(tài)/重啟 systemctl status mysqld systemctl restart mysqld # 登錄 /usr/local/mysql8/bin/mysql -uroot -p # 設(shè)置開機(jī)自啟/關(guān)閉 systemctl enable mysqld systemctl disable mysqld
二、關(guān)鍵配置與安全建議?
1、字符集與排序規(guī)則:應(yīng)用普遍需要 ?utf8mb4/utf8mb4_unicode_ci;不建議在 Linux 上啟用 ?lower_case_table_names=1?(InnoDB 不支持,易導(dǎo)致導(dǎo)入報(bào)錯(cuò))。
2、遠(yuǎn)程訪問:默認(rèn)只監(jiān)聽 ?127.0.0.1? 更安全;如需遠(yuǎn)程,創(chuàng)建最小權(quán)限的專用賬號(hào)并限制來源網(wǎng)段,必要時(shí)通過 ?VPN/SSH 隧道? 管理。
3、防火墻與端口:僅放行必要來源的 ?3306/tcp,避免對(duì)公網(wǎng)全量開放。
4、密碼策略與過期:保持 ?VALIDATE_PASSWORD?(或等效強(qiáng)策略),定期輪換高權(quán)限賬號(hào)密碼。
5、日志與審計(jì):生產(chǎn)環(huán)境建議開啟 ?錯(cuò)誤日志、按需開啟 ?慢查詢?nèi)罩?;如需更?qiáng)的審計(jì)能力,可評(píng)估企業(yè)版審計(jì)插件或合規(guī)替代方案。
6、SSL/TLS:跨公網(wǎng)或跨機(jī)房連接務(wù)必啟用 ?SSL/TLS,并限制不安全協(xié)議/加密套件。
7、備份與恢復(fù):制定并演練 ?全量+增量? 備份策略(如 mysqldump/xtrabackup),定期驗(yàn)證可恢復(fù)性
。
三、常見坑與排查要點(diǎn)?
1、路徑與權(quán)限:確保 ?basedir、datadir、log-error、socket? 等路徑存在且屬主為 ?mysql:mysql;錯(cuò)誤日志是定位啟動(dòng)失敗的第一入口。
2、服務(wù)未啟動(dòng)/未開機(jī)自啟:優(yōu)先用 ?systemctl status/start/enable;不要混用 SysV 腳本與 systemd。
3、無法遠(yuǎn)程連接:檢查 ?bind-address、用戶 ?Host? 字段、防火墻與云安全組、是否創(chuàng)建了對(duì)應(yīng)用戶并具備相應(yīng)權(quán)限。
4、密碼復(fù)雜度不滿足:調(diào)整策略或使用更強(qiáng)的密碼;必要時(shí)在測(cè)試環(huán)境臨時(shí)降低策略后及時(shí)恢復(fù)。
5、忘記 root 密碼:在可控環(huán)境下可臨時(shí)停止服務(wù),使用 ??–skip-grant-tables? 啟動(dòng)后重置密碼,再恢復(fù)正常啟動(dòng)方式
。
到此這篇關(guān)于在linux系統(tǒng)中使用通用包安裝Mysql的步驟的文章就介紹到這了,更多相關(guān)linux通用包安裝mysql內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql2/promise 中 execute 和 query 的使
mysql2/promise中,execute使用預(yù)處理語(yǔ)句,嚴(yán)格類型檢查且防SQL注入,適合頻繁執(zhí)行,query直接拼接SQL,參數(shù)綁定更寬松,適用于簡(jiǎn)單查詢,LIMIT/OFFSET在query中不會(huì)報(bào)錯(cuò),execute需拼接數(shù)字常量,本文給大家介紹mysql2/promise中execute和query的使用,感興趣的朋友一起看看吧2025-08-08
Window10下mysql 5.7.21 安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了Window10下mysql 5.7.21 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
查看修改mysql編碼方式讓它支持中文(gbk或者utf8)
MySQL的默認(rèn)編碼是Latin1,不支持中文,要支持中文需要把數(shù)據(jù)庫(kù)的默認(rèn)編碼修改為gbk或者utf8,真的是很麻煩啊,不過本文提供了詳細(xì)的修改教程,感興趣的你可不要走開啊,希望本文對(duì)你有所幫助2013-01-01
Linux環(huán)境下設(shè)置MySQL表名忽略大小寫的方法小結(jié)
在MySQL中,表名的大小寫敏感性取決于操作系統(tǒng)和MySQL的配置,在Unix/Linux系統(tǒng)上,表名通常是區(qū)分大小寫的,由于之前MySQL未設(shè)置忽略表名大小寫導(dǎo)致數(shù)據(jù)查詢失敗等問題,所以本文給大家介紹了Linux環(huán)境下設(shè)置MySQL表名忽略大小寫的方法,需要的朋友可以參考下2024-06-06

