Linux 環境下安裝 MySQL 8.0.34 二進制 詳細教程 附docker+k8s啟動

文章目錄

  • Linux 環境下安裝 MySQL 8.0(二進制)詳細教程
  • 準備工作
    • 安裝依賴包
  • 下載并解壓 MySQL
    • 下載 MySQL 二進制包
    • 解壓 MySQL
    • 移動目錄并創建 MySQL 用戶
  • 配置 MySQL
    • 配置數據目錄與日志目錄
    • 編輯配置文件 /etc/my.cnf
  • 初始化 MySQL 數據庫
  • 配置啟動腳本與環境變量
    • 配置系統啟動腳本
    • 配置環境變量
  • 啟動 MySQL 服務
  • 登錄 MySQL 并修改 root 密碼
    • 使用初始化密碼登錄
    • 修改 root 用戶密碼
    • 允許遠程訪問(可選)
  • 測試遠程連接
  • 總結
  • docker-compose.yml
  • k8s
    • configmap
    • deployment
    • svc


Linux 環境下安裝 MySQL 8.0(二進制)詳細教程

在生產環境或部分場景下,我們通常不會直接使用 yumapt 安裝 MySQL,而是通過官方提供的二進制 tar 包進行安裝。本文以 CentOS 7.x 為例,詳細記錄 MySQL 8.0.34 的安裝步驟及配置方法。


準備工作

安裝依賴包

MySQL 運行需要依賴一些系統庫,因此需要提前安裝:

yum -y install tar            # 安裝 tar 解壓工具
yum -y install libaio         # 異步 I/O 庫
yum -y install numactl        # NUMA 支持庫

下載并解壓 MySQL

下載 MySQL 二進制包

可以到 MySQL 官方下載頁面 獲取相應的版本。本文以 mysql-8.0.34-linux-glibc2.12-x86_64.tar.xz 為例。
在這里插入圖片描述

解壓 MySQL

tar xf mysql-8.0.34-linux-glibc2.12-x86_64.tar.xz

移動目錄并創建 MySQL 用戶

創建 MySQL 專用的用戶和用戶組:

groupadd mysql
useradd -g mysql mysql

將解壓后的文件移動至 /usr/local/mysql

mkdir -p /usr/local/mysql
mv mysql-8.0.34-linux-glibc2.12-x86_64/* /usr/local/mysql/

配置 MySQL

配置數據目錄與日志目錄

創建 MySQL 數據和日志存儲目錄,并授權給 mysql 用戶:

mkdir -p /data/app/mysql/
chown -R mysql:mysql /data/app/mysql/mkdir -p /usr/local/mysql/log
touch /usr/local/mysql/log/mysql_error.log
chown -R mysql:mysql /usr/local/mysql

編輯配置文件 /etc/my.cnf

根據實際需求編寫配置文件,例如:

[mysql]
# MySQL客戶端默認字符集
default-character-set=utf8mb4
socket=/tmp/mysql.sock[mysqld]
skip_ssl
skip_name_resolve# 端口與時區
port=3306
default_time_zone='+08:00'# 表名大小寫(Linux默認區分大小寫,若跨平臺建議設置為1)
lower_case_table_names=1# 二進制日志
log_bin=master-bin
server_id=10
binlog_format=ROW
sync_binlog=1
expire_logs_days=10
max_binlog_size=500M# 目錄
basedir=/usr/local/mysql
datadir=/data/app/mysql
socket=/tmp/mysql.sock# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci# 存儲引擎
default_storage_engine=INNODB
max_allowed_packet=64M
key_buffer_size=32M# InnoDB優化
innodb_buffer_pool_size=2G          # (2C4G改成1G,8C16G改成8G)
innodb_buffer_pool_instances=2
innodb_buffer_pool_dump_at_shutdown=1
innodb_buffer_pool_load_at_startup=1
innodb_flush_method=O_DIRECT
innodb_log_file_size=512M           # (2C4G可改256M,8C16G可改2G)
innodb_log_buffer_size=64M
innodb_lock_wait_timeout=50
innodb_io_capacity=2000
innodb_io_capacity_max=4000# 慢查詢日志
slow_query_log=1
slow_query_log_file=/usr/local/mysql/log/master.slow
long_query_time=2# 錯誤日志
log_error=/usr/local/mysql/log/mysql_error.log# SQL模式(MySQL8推薦嚴格模式)
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY# GTID復制
gtid_mode=ON
enforce_gtid_consistency=TRUE
log_slave_updates=ON
binlog_checksum=NONE# 連接與超時
max_connections=500                # (2C4G改200,8C16G可到2000)
max_connect_errors=1000
wait_timeout=120
interactive_timeout=120# Performance Schema
performance_schema=ON# 線程池(需要企業版/社區版Percona才支持,官方MySQL可忽略)
# thread_handling=pool-of-threads

初始化 MySQL 數據庫

執行初始化操作,生成數據文件和 root 初始密碼:

cd /usr/local/mysql/bin/
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/app/mysql

初始化完成后,可通過以下命令查看初始 root 密碼:

cat ../log/mysql_error.log

日志中會出現類似以下內容:

A temporary password is generated for root@localhost: y_U(lb-D/3Lj

請記下該密碼,用于首次登錄。


配置啟動腳本與環境變量

配置系統啟動腳本

復制官方提供的啟動腳本并賦予執行權限:

cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld

如有需要,可編輯 /etc/rc.d/init.d/mysqld 中的 basedirdatadir

配置環境變量

為了方便直接使用 mysql 命令,將 MySQL 的 bin 目錄加入系統 PATH:

echo 'export PATH=$PATH:/usr/local/mysql/bin/' >> /etc/profile
source /etc/profile

啟動 MySQL 服務

檢查 MySQL 狀態并啟動服務:

/etc/rc.d/init.d/mysqld status
/etc/rc.d/init.d/mysqld start

登錄 MySQL 并修改 root 密碼

使用初始化密碼登錄

mysql -u root -p'y_U(lb-D/3Lj'

注意:如果出現 libtinfo.so.5 缺失,可通過以下方法解決:

[root@test ~]# mysql -uroot -p
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
[root@test ~]# find / -name libtinfo.so*
/usr/lib64/libtinfo.so.6
/usr/lib64/libtinfo.so.6.2
[root@test ~]# ln -s /usr/lib64/libtinfo.so.6.2 /usr/lib64/libtinfo.so.5
[root@test ~]# 
find / -name libtinfo.so*
ln -s /usr/lib64/libtinfo.so.6.2 /usr/lib64/libtinfo.so.5

修改 root 用戶密碼

進入 MySQL 后執行以下語句:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123.com';
FLUSH PRIVILEGES;

允許遠程訪問(可選)

如果需要遠程登錄,可將 root 用戶的 host 設置為 %

USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;

測試遠程連接

mysql -u root -p'123.com' -h <server_ip> -P3306

如果連接正常,說明 MySQL 已安裝并配置成功。


總結

以上就是在 Linux 下通過 tar 包安裝 MySQL 8.0 的完整步驟。總結下關鍵點:

  • 選擇二進制包安裝的原因:可控性更強、版本靈活、適合生產環境定制化需求。
  • 注意初始化密碼:安裝后第一次必須使用日志中的臨時密碼。
  • 安全建議:不要直接暴露 root 用戶遠程訪問,建議新建具有相應權限的業務賬戶。

docker-compose.yml

注: 官方鏡像

version: '3.8'services:mysql:image: mysql:8.0.34container_name: mysql-testrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: "123.com"  # 初始化 root 密碼(需要 Dockerfile 中支持此變量)ports:- "3307:3306"                  # 宿主機端口映射volumes:- ./data:/var/lib/mysql        # 數據持久化到當前目錄- ./my.cnf:/etc/my.cnf         # 自定義 my.cnf(可選)networks:- mysql-netnetworks:mysql-net:driver: bridge

my.cnf

[mysqld]
# 基本配置
user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci# 日志相關
slow_query_log=1
slow_query_log_file=/var/lib/mysql/mysql-slow.log
long_query_time=2# 緩存大小示例
innodb_buffer_pool_size=256M# 其他根據需求定制

k8s

configmap

apiVersion: v1
kind: ConfigMap
metadata:name: mysql-confignamespace: test
data:my.cnf: |[mysqld]character-set-server=utf8mb4collation-server=utf8mb4_unicode_cislow_query_log=1slow_query_log_file=/var/lib/mysql/mysql-slow.loglong_query_time=2log-error=/var/lib/mysql/mysql-error.logmax_connections=1000max_connect_errors=1000wait_timeout=28800# 時區設置default_time_zone='+08:00'

deployment

apiVersion: apps/v1
kind: Deployment
metadata:name: mysqlnamespace: test
spec:replicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: harbor-ioscar.cbf.com/hawk/mysql:8.0.34env:- name: MYSQL_ROOT_PASSWORDvalue: "123.com"ports:- containerPort: 3306volumeMounts:- name: mysql-datamountPath: /var/lib/mysql- name: mysql-configmountPath: /etc/mysql/conf.dreadOnly: truevolumes:- name: mysql-datahostPath:path: /data/mysql/testtype: DirectoryOrCreate- name: mysql-configconfigMap:name: mysql-config

svc

apiVersion: v1
kind: Service
metadata:name: mysqlnamespace: test
spec:selector:app: mysqlports:- protocol: TCPport: 3306targetPort: 3306nodePort: 30505 # 可以換成自己的端口type: NodePort

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90276.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90276.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTML ISO-8859-1: 完全解析

HTML ISO-8859-1: 完全解析 引言 ISO-8859-1,又稱為 Latin-1,是一種廣泛使用的字符編碼標準,特別是在HTML文檔中。本文將詳細介紹ISO-8859-1編碼的特點、應用場景以及如何在使用HTML時正確地使用ISO-8859-1編碼。 ISO-8859-1編碼概述 定義 ISO-8859-1編碼是一種單字節編…

c++學習第3篇編輯器——centos7.9.2009系統離線安裝clion軟件并成功調試c++程序

遠程linux服務器安裝clion0 前提2個&#xff1a;1 下載CLion-2021.1.1.tar.gz安裝包2 上傳到linux系統并解壓3 修改linux系統里的/etc/ssh/sshd_config文件中的X11UseLocalhost 注釋去掉并設為no4 安裝xauth5 安裝MobaXterm軟件并使用ssh組件打開clion5.1 如果打不開clion,報錯…

20250722解決在Ubuntu 24.04.2下編譯RD-RK3588開發板的Android13出現找不到lz4的問題

20250722解決在Ubuntu 24.04.2下編譯RD-RK3588開發板的Android13出現找不到lz4的問題 2025/7/22 15:21緣起&#xff1a;在Ubuntu 24.04.2下編譯RD-RK3588開發板的Android13。 報錯&#xff1a;/bin/sh: 1: lz4: not found為了簡單起見&#xff0c;直接在 榮品的技術支持QQ群的 …

加載用戶設置時遇到錯誤找到一個帶有無效“icon“的配置文件。將該配置文件默認為無圖標。確保設置“icon“時,該值是圖像的有效文件路徑“

"C:\Users\Yourname\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json 修改所有icon字段位none 如&#xff1a;{"guid": "{bf61c995-08cc-4a56-b781-5dba411ef19c}","hidden": false,"icon&…

如何提升連帶消費?從新零售“人-貨-場”模型拆解

目錄 一、分析背景 二、新零售分析思路和分析方法 1.具體分析思路 2.分析方法 三、新零售“人-貨-場”分析的實操步驟 1.數據收集 2.數據處理 3.圖表制作 四、總結 想讓線上引來的顧客&#xff0c;在店里多買幾件&#xff1f; 連帶消費可是實體店賺錢的“秘密武器”&a…

Java異常處理核心原理與最佳實踐

Java異常處理核心原理與最佳實踐 場景&#xff1a; 你開發的文件處理工具在讀取用戶上傳的文件時突然崩潰&#xff0c;控制臺拋出FileNotFoundException。用戶的操作被中斷&#xff0c;數據丟失。這種糟糕的體驗正是異常處理機制要解決的核心問題——如何在程序出錯時優雅地恢復…

Ubuntu 安裝 Odoo 17 詳細教程

Ubuntu 安裝 Odoo 17 詳細教程 本教程將指導您在 Ubuntu 系統上從源代碼安裝 Odoo 17。Odoo 是一款功能強大的開源 ERP 和 CRM 軟件套件。本教程適用于希望自行配置和管理 Odoo 環境的用戶&#xff0c;尤其適合開發者和系統管理員。 教程概述 本教程將涵蓋以下步驟&#xff…

鯤鵬·卓識系列2.45G傳感器型有源標簽:以國產化技術重塑安全監測與人員管理新標準

標題&#xff1a;鯤鵬卓識系列2.45G傳感器型有源標簽&#xff1a;以國產化技術重塑安全監測與人員管理新標準 隨著工業4.0和智慧城市建設的加速推進&#xff0c;安全生產、環境監測和人員管理成為各行業的核心需求。在軍事、工業、倉儲、能源等領域&#xff0c;溫濕度、煙霧、油…

騰訊云推出CodeBuddy:革新AI全棧開發體驗

文章目錄一、前言二、安裝流程三、CodeBuddy 核心功能3.1 AI輔助開發3.2 Coding Design Chat 三大模式3.3 Boost Prompt3.4 Figma 集成3.5 Componen 控件庫3.6 Config MCP3.7 Upload Images 圖片上傳和管理3.8 Preview功能3.9 Deploy 一鍵部署3.10 項目展示 | MCP生成小紅書卡片…

龍虎榜——20250723

上證指數放量收上影線&#xff0c;未站上3600點&#xff0c;個股下跌明顯多于上漲&#xff0c;指數有調整需求&#xff0c;注意短線風險。深證指數較昨日縮量收陰線&#xff0c;依然在5日均線上方運行&#xff0c;打到前期平臺高點有震蕩調整需求&#xff0c;注意風險。2025年7…

SpringBoot06-@ConfigurationProperties注解

ConfigurationProperties注解用于將配置文件&#xff08;application.properties 或 application.yml&#xff09;中的配置值&#xff0c;自動綁定到 Java Bean 對象上。1-1、基本用途比如我們在 application.yml 中有這樣一段配置&#xff1a;app:name: myAppversion: 1.0.0au…

oracle里面concat函數用法,oracle wm_concat函數用法-

wmsys.wm_concat函數&#xff0c;它的作用是以’,’鏈接字符 例子如下&#xff1a; SQL> create table idtable (id number,name varchar2(30)); Table created SQL> insert into idtable values(10,’ab’); 1 row inserted SQL> insert into idtable values(10,’bc…

C++中的list(2)簡單復現list中的關鍵邏輯

C中的list&#xff08;2&#xff09;//簡單復現list中的關鍵邏輯 前言 這一節的主要內容就是&#xff1a;簡單復現list中的關鍵邏輯。同樣的&#xff0c;我們這一節也是先粗略的看一眼源碼&#xff0c;結合源碼&#xff0c;邊理解邊復現。源碼我已經上傳到gitee&#xff0c;網…

Linux——System V 共享內存 IPC

文章目錄一、共享內存的原理二、信道的建立1.創建共享內存1.key的作用2.key的選取3.shmid的作用4.key和shmid的區別5.內存設定的特性6.shmflg的設定2.綁定共享內存3.代碼示例三、利用共享內存通信1.通信2.解除綁定3.銷毀共享內存1.命令行銷毀2.程序中銷毀四、共享內存的生命周期…

Python 程序設計講義(9):Python 的基本數據類型——復數

Python 程序設計講義&#xff08;9&#xff09;&#xff1a;Python 的基本數據類型——復數 復數與數學中的復數概念類似。在 Python 中&#xff0c;復數表示為 abj&#xff0c;其中&#xff1a;a為實數部分&#xff0c;b為虛數部分&#xff0c;j稱為虛數單位。復數必須包含虛數…

leetcode_121 買賣股票的最佳時期

1. 題意 有一個股價變化圖&#xff0c;你可以在一天買入&#xff0c;在未來一天賣出。 求通過這樣一次操作的最大獲利。 2. 題解 2.1 枚舉 直接枚舉&#xff0c;買入賣出的時間&#xff0c;肯定會超時啦~ 時間復雜度為O(n2)O(n^2)O(n2) 空間復雜度為O(1)O(1)O(1) class …

ToBToC的定義與區別

B 端和 C 端主要是從產品所面向的用戶群體角度來區分的&#xff0c;B 端指的是企業用戶&#xff08;Business&#xff09;&#xff0c;C 端指的是個人消費者&#xff08;Consumer&#xff09;&#xff0c;它們在多個方面存在明顯區別&#xff0c;具體如下&#xff1a;用戶特征B…

Python 程序設計講義(8):Python 的基本數據類型——浮點數

Python 程序設計講義&#xff08;8&#xff09;&#xff1a;Python 的基本數據類型——浮點數 目錄Python 程序設計講義&#xff08;8&#xff09;&#xff1a;Python 的基本數據類型——浮點數一、浮點數的表示形式1、小數形式2、指數形式二、浮點數的精確度浮點數也稱小數&am…

MCP客戶端架構與實施

前言:從模型到生產力 — MCP的戰略價值 在過去的一年里,我們團隊見證了大型語言模型(LLM)從技術奇跡向企業核心生產力工具的演變。然而,一個孤立的LLM無法解決實際的業務問題。真正的價值釋放,源于將模型的認知能力與企業現有的數據、API及工作流進行無縫、安全、可擴展…

白盒測試核心覆蓋率標準詳解文檔

白盒測試核心覆蓋率標準詳解文檔 1. 什么是白盒測試與覆蓋率&#xff1f; 白盒測試&#xff08;White-box Testing&#xff09;&#xff0c;又稱結構測試或邏輯驅動測試&#xff0c;是一種測試方法&#xff0c;測試人員能夠訪問并了解被測軟件的內部結構、代碼和實現邏輯。測試…