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

Fedora/CentOS/RHEL 上安裝配置 MySQL 5.7/8.0 完整指南

     編輯:MySQL 資料庫相關知識

一、使用 DNF/YUM 官方倉庫安裝(推薦)

1. 配置 MySQL 官方 YUM 源

# 下載並安裝源配置包(以 8.0 為例)
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm

# 或 Fedora 直接啟用模塊
sudo dnf module enable mysql:8.0

2. 安裝客戶端與服務端

sudo dnf install mysql-community-server mysql-community-client
# 或舊版 yum
sudo yum install mysql-community-server mysql-community-client

3. 啟動並設置開機自啟

sudo systemctl start mysqld
sudo systemctl enable mysqld

4. 獲取臨時 root 密碼(5.7/8.0 默認生成)

sudo grep 'temporary password' /var/log/mysqld.log
# 輸出類似:2023-01-01T00:00:00.000000Z 0 [Note] A temporary password is generated for root@localhost: xYz#Abc123

5. 首次登錄並修改密碼(強制密碼策略)

mysql -u root -p
# 輸入上一步臨時密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
-- 8.0 推薦 caching_sha2_password 插件
-- 兼容舊客戶端可用:
-- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewStrongPass123!';

二、安全初始化腳本

sudo mysql_secure_installation
# 交互式完成:
# - 修改 root 密碼
# - 移除匿名用戶
# - 禁止 root 遠程登錄
# - 移除 test 庫
# - 重新載入權限表

三、常用管理操作

創建業務用戶與授權

CREATE USER 'app_user'@'%' IDENTIFIED BY 'AppPass123!';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER 
ON app_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

創建數據庫

CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

修改用戶密碼

# 方式 1:mysqladmin
mysqladmin -u root -p password 'NewPass123!'
# 方式 2:SQL
ALTER USER 'user'@'host' IDENTIFIED BY 'NewPass123!';

移除匿名用戶

DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;

四、圖形化管理工具(可選)

sudo dnf install mysql-workbench-community
# 或通用工具
sudo dnf install dbeaver-ce

應用程序菜單 → 系統工具 → MySQL Workbench / DBeaver。

五、關鍵配置文件 /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_0900_ai_ci

# 連接
max_connections=500
max_connect_errors=100000

# InnoDB 核心(按內存調整)
innodb_buffer_pool_size=1G        # 物理內存 60-70%
innodb_log_file_size=256M
innodb_flush_log_at_trx_commit=1  # 生產建議 1
innodb_file_per_table=ON
innodb_thread_concurrency=0       # 0=自動

# 慢查詢
slow_query_log=1
slow_query_log_file=/var/log/mysql-slow.log
long_query_time=1
log_queries_not_using_indexes=1

# Binlog(主從/增量備份必開)
log_bin=mysql-bin
binlog_format=ROW
expire_logs_days=7
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON

修改後 sudo systemctl restart mysqld。

六、防火牆與 SELinux

# 防火牆開放 3306
sudo firewall-cmd --permanent --add-service=mysql
sudo firewall-cmd --reload

# SELinux 允許 MySQL 讀寫非默認目錄(如掛載獨立數據盤)
sudo semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?"
sudo restorecon -Rv /data/mysql

七、驗證安裝

# 連接測試
mysql -u app_user -p -h localhost app_db

# 狀態檢查
mysqladmin -u root -p status
# 輸出包含 Uptime、Threads、Questions、Slow queries 等

八、常見問題排查

現象原因/解決
無法連接:Can't connect to MySQL server服務未啟動、socket 路徑錯誤、防火牆攔截、bind-address=127.0.0.1 限制遠程
Authentication plugin 'caching_sha2_password' cannot be loaded客戶端版本過舊,改用 mysql_native_password 或升級驅動
密碼策略報錯:Your password does not satisfy the current policy requirements調整 validate_password.policy 或使用更複雜密碼
data 目錄權限錯誤chown -R mysql:mysql /var/lib/mysql、restorecon
InnoDB 表空間遷移後報錯需同步遷移 ibdata1、ib_logfile*、.ibd,並保證 innodb_data_file_path 一致
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved