在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)下載頁復(fù)制對應(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ù)存儲目錄
mkdir -p /usr/local/mysql8/data /usr/local/mysql8/log
5、授權(quán)mysql用戶
chown -R mysql.mysql /data/mysql8/
6、初始化數(shù)據(jù)庫
這里需要記住初始密碼
/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、刪測試庫、驗(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)限的專用賬號并限制來源網(wǎng)段,必要時(shí)通過 ?VPN/SSH 隧道? 管理。
3、防火墻與端口:僅放行必要來源的 ?3306/tcp,避免對公網(wǎng)全量開放。
4、密碼策略與過期:保持 ?VALIDATE_PASSWORD?(或等效強(qiáng)策略),定期輪換高權(quán)限賬號密碼。
5、日志與審計(jì):生產(chǎn)環(huán)境建議開啟 ?錯(cuò)誤日志、按需開啟 ?慢查詢?nèi)罩?;如需更?qiáng)的審計(jì)能力,可評估企業(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)建了對應(yīng)用戶并具備相應(yīng)權(quán)限。
4、密碼復(fù)雜度不滿足:調(diào)整策略或使用更強(qiáng)的密碼;必要時(shí)在測試環(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決MySQL報(bào)錯(cuò)Error 3948 (42000): Loading loc
在執(zhí)行MySQL項(xiàng)目過程中意外出現(xiàn)的報(bào)錯(cuò),之前也沒有遇到過,報(bào)錯(cuò)信息如下,Error 3948 (42000): Loading local data is disabled; this must be enabled on both the client an,本文小編就給大家介紹一下解決報(bào)錯(cuò)的方法,需要的朋友可以參考下2023-09-09
一次MySQL啟動(dòng)導(dǎo)致的事故實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了一次MySQL啟動(dòng)導(dǎo)致的事故實(shí)戰(zhàn)記錄,記錄了MySQL 啟動(dòng)成功但未監(jiān)聽端口的解決方法,文中給出了詳細(xì)的解決方法,需要的朋友可以參考下2021-09-09
mysql執(zhí)行腳本導(dǎo)入表和數(shù)據(jù)后中文注釋亂碼的問題解決
本人在使用不同版本下進(jìn)行操作時(shí),就會出現(xiàn)中文亂碼的問題,,例如我本地安裝mysql8,服務(wù)器安裝的是mysql5,然后本地連接服務(wù)器的mysql后,執(zhí)行SQL腳本之后發(fā)現(xiàn)中文全部亂碼,所以本文介紹了mysql執(zhí)行腳本導(dǎo)入表和數(shù)據(jù)后中文注釋亂碼的問題解決,需要的朋友可以參考下2024-04-04
mysql雙機(jī)熱備實(shí)現(xiàn)方案【可測試】
雙機(jī)熱備從廣義上講,就是對于重要的服務(wù),使用兩臺服務(wù)器,互相備份,共同執(zhí)行同一服務(wù)。這篇文章主要介紹了mysql雙機(jī)熱備實(shí)現(xiàn)方案,需要的朋友可以參考下2019-10-10
線上MYSQL同步報(bào)錯(cuò)故障處理方法總結(jié)(必看篇)
下面小編就為大家?guī)硪黄€上MYSQL同步報(bào)錯(cuò)故障處理方法總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
MySQL日期時(shí)間類型與字符串互相轉(zhuǎn)換的方法
這篇文章主要介紹了MySQL日期時(shí)間類型與字符串互相轉(zhuǎn)換的方法,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07
MySQL多版本并發(fā)控制MVCC深入學(xué)習(xí)
這篇文章主要介紹了MySQL多版本并發(fā)控制MVCC,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2021-11-11
MySQL通過binlog實(shí)現(xiàn)恢復(fù)數(shù)據(jù)
在MySQL中,如果不小心刪除了數(shù)據(jù),可以利用二進(jìn)制日志(binlog)來恢復(fù)數(shù)據(jù),本文將通過幾個(gè)示例為大家介紹一下具體實(shí)現(xiàn)方法,希望對大家有所幫助2025-01-01

