首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 8.0 YUM 源安裝配置完整教程:從源選擇到生產就緒

     編輯:MySQL 資料庫相關知識

安裝官方 YUM 源 RPM 包

# 下載最新源配置包(版本號可能更新,請查官網)
wget https://repo.mysql.com/mysql80-community-release-el7-5.noarch.rpm

# 安裝源配置
yum install -y mysql80-community-release-el7-5.noarch.rpm

驗證並選擇目標版本

# 查看所有可用 MySQL 子源
yum repolist all | grep mysql

# 輸出示例:
# mysql57-community/x86_64 MySQL 5.7 Community Server enabled
# mysql80-community/x86_64 MySQL 8.0 Community Server disabled

啟用 8.0、禁用 5.7

# 方法一:yum-config-manager(需安裝 yum-utils)
yum install -y yum-utils
yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql80-community

# 方法二:直接編輯 repo 文件
vim /etc/yum.repos.d/mysql-community.repo
# 將 mysql57-community 區塊 enabled=1 改為 0
# 將 mysql80-community 區塊 enabled=0 改為 1

驗證當前生效源

yum repolist enabled | grep mysql
# 應僅顯示 mysql80-community

安裝 MySQL 8.0 服務端

yum install -y mysql-community-server

啟動服務與初始化流程

systemctl start mysqld
systemctl status mysqld

首次啟動自動完成:

  1. 數據目錄初始化 (/var/lib/mysql)
  2. SSL 證書生成
  3. validate_password 組件安裝
  4. 創建 root@localhost 並生成隨機密碼

獲取臨時密碼並安全配置

# 查看隨機密碼
grep 'temporary password' /var/log/mysqld.log

# 登入修改密碼(需滿足密碼策略:長度≥8、大小寫、數字、特殊字符)
mysql -uroot -p'TempPass#123'

# 修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongProdPass#2024';
FLUSH PRIVILEGES;

執行安全初始化腳本(推薦)

mysql_secure_installation

交互式完成:

  • 修改 root 密碼
  • 移除匿名用戶
  • 禁止 root 遠程登入
  • 移除 test 庫
  • 重新載入權限表

常見啟動問題排查

錯誤:initialize specified but data directory has files

# 清空數據目錄(謹慎!會丟失數據)
rm -rf /var/lib/mysql/*
systemctl restart mysqld

錯誤:SELinux 阻擋

# 檢查狀態
getenforce
# 臨時放行
setenforce 0
# 永久配置(需重啟)
# vim /etc/selinux/config  SELINUX=permissive

生產環境核心配置 /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 基礎效能
innodb_buffer_pool_size = 4G        # 物理內存 60-70%
innodb_log_file_size = 1G
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
max_connections = 2000
thread_cache_size = 100

# 日誌
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1

# 二進制日誌(主從/恢復必需)
log_bin = /var/log/mysql/binlog
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 100M

# 安全
local_infile = 0
skip_show_database

防火牆與遠程訪問

# firewalld (CentOS 7+)
firewall-cmd --permanent --add-service=mysql
firewall-cmd --reload

# iptables
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save

創建業務用戶(最小權限原則)

CREATE USER 'app_user'@'10.0.0.%' IDENTIFIED BY 'AppPass#2024';
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_user'@'10.0.0.%';
FLUSH PRIVILEGES;

設置開機自啟

systemctl enable mysqld
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved