首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Linux (RHEL/CentOS) 下 MySQL 5.6/5.7/8.0 RPM 包安裝與初始化全流程

     編輯:MySQL 綜合教學

1. 獲取 RPM 包 (官方推薦 YUM 源安裝,單包安裝僅離線/特定版本用)

# 官方 YUM 源 (推薦)
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm  # 8.0
# 或 5.7
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql80-community-release-el7-5.noarch.rpm
yum repolist enabled | grep mysql
yum install -y mysql-community-server  # 自動解決依賴 (libaio, numactl 等)

# 離線 RPM 手動安裝 (需按依賴順序)
# common -> libs -> client -> server
rpm -ivh mysql-community-common-*.rpm
rpm -ivh mysql-community-libs-*.rpm
rpm -ivh mysql-community-client-*.rpm
rpm -ivh mysql-community-server-*.rpm
# 缺依賴時:yum localinstall -y *.rpm (自動從配置源下載依賴)

2. 服務管理與首次啟動

systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

# 5.7/8.0 首次啟動會:
# 1. 初始化 data 目錄
# 2. 生成臨時 root 密碼 (寫入 error log)
# 3. SSL 證書生成
# 4. 啟動服務

3. 獲取臨時密碼並登錄修改

# 查看臨時密碼
grep 'temporary password' /var/log/mysqld.log
# 2024-01-15T10:30:00.123456Z 1 [Note] A temporary password is generated for root@localhost: XyZ#Abc123

# 登錄並修改 (必須修改,否則後續操作報錯)
mysql -uroot -p'XyZ#Abc123' --connect-expired-password
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStr0ngP@ss!2024';
-- 或 5.7
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewStr0ngP@ss!2024');

4. 安全初始化 (mysql_secure_installation)

mysql_secure_installation
# 交互式:
# 1. Validate password plugin? Y (建議開啟)
# 2. Change root password? N (已改)
# 3. Remove anonymous users? Y
# 4. Disallow root login remotely? Y (生產必選)
# 5. Remove test database? Y
# 6. Reload privilege tables? Y

5. 核心配置調整 (/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

# 內存 (假設 16G 內存)
innodb_buffer_pool_size=10G
innodb_buffer_pool_instances=8
innodb_log_file_size=1G
innodb_log_files_in_group=2
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT
innodb_file_per_table=1

# 連接
max_connections=1000
thread_cache_size=100
skip_name_resolve=ON

# Binlog/GTID
log_bin=binlog
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
binlog_expire_logs_seconds=604800
sync_binlog=1

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

# 重啟生效
systemctl restart mysqld

6. 驗證安裝

mysql -uroot -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'innodb_buffer_pool_size'; SHOW DATABASES;"
# 輸出版本、參數生效值、默認庫 (mysql, information_schema, performance_schema, sys)

7. 常見問題排查

  • SELinux 阻擋:setenforce 0 臨時;永久 sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config 重啟。或配置 mysqld_var_lib_t 上下文。
  • 防火牆:firewall-cmd --permanent --add-port=3306/tcp --add-port=33061/tcp; firewall-cmd --reload (MGR 需 33061)。
  • 缺 libaio:yum install -y libaio。
  • data 目錄權限:chown -R mysql:mysql /var/lib/mysql。
  • 端口衝突:netstat -ntlp | grep 3306 或 ss -ntlp。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved