# 下載最新源配置包(版本號可能更新,請查官網) 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
# 方法一: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
yum install -y mysql-community-server
systemctl start mysqld systemctl status mysqld
首次啟動自動完成:
/var/lib/mysql)validate_password 組件安裝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
交互式完成:
# 清空數據目錄(謹慎!會丟失數據) rm -rf /var/lib/mysql/* systemctl restart mysqld
# 檢查狀態 getenforce # 臨時放行 setenforce 0 # 永久配置(需重啟) # vim /etc/selinux/config SELINUX=permissive
[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