1. 环境准备与前置检查在CentOS 7上安装MySQL 8之前我们需要先做好系统环境的基础配置。不同于Windows平台的一键安装包Linux环境下的数据库部署需要更多手动配置环节。我建议先执行以下命令检查系统版本cat /etc/redhat-release典型输出应该是CentOS Linux release 7.x.xxxx (Core)。MySQL 8对系统资源有一定要求建议服务器至少配置2GB内存和20GB磁盘空间。通过free -h和df -h可以快速验证资源情况。注意如果之前安装过MariaDB或其他MySQL版本必须先彻底卸载。运行rpm -qa | grep mariadb和rpm -qa | grep mysql查看已安装包用yum remove命令完全移除。2. 官方仓库配置与软件包安装2.1 添加MySQL官方Yum源MySQL 8不在默认的CentOS仓库中我们需要手动添加官方Yum源。这是关键步骤很多安装失败都源于仓库配置错误wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm rpm -ivh mysql80-community-release-el7-5.noarch.rpm安装完成后检查/etc/yum.repos.d/mysql-community.repo文件确保[mysql80-community]部分的enabled1。我遇到过因为gpgcheck导致的安装失败可以通过临时设置gpgcheck0解决生产环境不推荐。2.2 安装MySQL服务器执行安装命令前建议先更新Yum缓存yum makecache fast yum install mysql-community-server这个命令会安装MySQL服务器及其所有依赖包包括mysql-community-clientmysql-community-commonmysql-community-libsmysql-community-server安装过程约需5-10分钟取决于网络速度。如果遇到Public key for xxx.rpm is not installed错误需要导入GPG密钥rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-20223. 初始配置与安全加固3.1 启动服务与查看临时密码安装完成后启动MySQL服务systemctl start mysqld systemctl enable mysqldMySQL 8首次启动时会自动生成临时root密码查看方法grep temporary password /var/log/mysqld.log输出类似2023-01-01T00:00:00.000000Z 1 [Note] A temporary password is generated for rootlocalhost: XXXXXXXXXX。这个密码复杂度很高建议立即修改。3.2 运行安全配置向导MySQL提供了交互式安全配置工具mysql_secure_installation按照提示依次操作输入临时密码设置新root密码需包含大小写字母、数字和特殊字符移除匿名用户建议选Y禁止root远程登录生产环境必选Y移除测试数据库建议选Y重新加载权限表选Y重要如果忘记临时密码需要停止服务后以--skip-grant-tables模式启动修改具体操作后面会说明。4. 基础配置优化4.1 修改默认配置文件MySQL 8的主配置文件是/etc/my.cnf实际配置在/etc/my.cnf.d/目录下。建议至少修改以下参数[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-serverutf8mb4 collation-serverutf8mb4_unicode_ci # 性能相关 innodb_buffer_pool_size1G # 建议物理内存的50-70% max_connections200 wait_timeout300修改后需要重启服务生效systemctl restart mysqld4.2 创建管理用户不建议直接使用root账户操作应该创建专用管理用户CREATE USER admin% IDENTIFIED BY ComplexPassword123!; GRANT ALL PRIVILEGES ON *.* TO admin% WITH GRANT OPTION; FLUSH PRIVILEGES;5. 常见问题排查5.1 连接失败问题如果遇到ERROR 2002 (HY000): Cant connect to local MySQL server检查服务是否运行systemctl status mysqldsocket文件位置netstat -ln | grep mysql防火墙设置firewall-cmd --list-all5.2 密码重置方法如果忘记root密码按以下步骤重置停止服务systemctl stop mysqld启动到安全模式mysqld_safe --skip-grant-tables 无密码登录mysql -u root执行更新FLUSH PRIVILEGES; ALTER USER rootlocalhost IDENTIFIED BY NewPassword;退出并正常重启服务5.3 性能调优建议对于生产环境建议调整缓冲池大小innodb_buffer_pool_size日志文件大小innodb_log_file_size连接数设置max_connections查询缓存query_cache_sizeMySQL 8已移除可以通过SHOW STATUS和SHOW VARIABLES命令查看当前状态和配置。6. 版本升级与迁移6.1 从MySQL 5.7升级到8.0如果需要从5.7升级必须先备份所有数据库检查兼容性问题mysqlcheck -u root -p --all-databases --check-upgrade停止服务并卸载旧版本安装MySQL 8后运行mysql_upgrade6.2 数据目录迁移如果需要更改默认数据目录如挂载到大容量磁盘停止MySQL服务复制数据文件cp -Rp /var/lib/mysql /new/location修改my.cnf中的datadir更新SELinux上下文semanage fcontext -a -t mysqld_db_t /new/location(/.*)? restorecon -Rv /new/location启动服务7. 日常维护操作7.1 备份与恢复推荐使用mysqldump进行逻辑备份mysqldump -u admin -p --all-databases full_backup.sql恢复时mysql -u admin -p full_backup.sql对于大型数据库可以考虑物理备份工具如Percona XtraBackup。7.2 监控与日志关键日志文件错误日志/var/log/mysqld.log慢查询日志需在配置中启用二进制日志用于时间点恢复可以使用SHOW PROCESSLIST查看当前连接SHOW ENGINE INNODB STATUS查看InnoDB状态。8. 安全加固进阶8.1 防火墙配置限制访问来源IPfirewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.0/24 port protocoltcp port3306 accept firewall-cmd --reload8.2 审计插件MySQL Enterprise版包含审计插件社区版可以使用开源的MariaDB审计插件或McAfee MySQL Audit Plugin。安装后配置INSTALL PLUGIN server_audit SONAME server_audit.so; SET GLOBAL server_audit_loggingON;8.3 加密连接配置SSL/TLS加密生成证书如果使用自签名在my.cnf中添加[mysqld] ssl-ca/etc/mysql/ca.pem ssl-cert/etc/mysql/server-cert.pem ssl-key/etc/mysql/server-key.pem要求用户使用SSL连接ALTER USER admin% REQUIRE SSL;9. 高可用方案简介9.1 主从复制配置基本步骤在主服务器启用二进制日志创建复制账号获取主服务器状态SHOW MASTER STATUS在从服务器配置CHANGE MASTER TO MASTER_HOSTmaster_ip, MASTER_USERrepl_user, MASTER_PASSWORDpassword, MASTER_LOG_FILEmysql-bin.000001, MASTER_LOG_POS123456;启动复制START SLAVE9.2 组复制MySQL 8支持组复制Group Replication提供更高可用性配置group_replication插件初始化组SET GLOBAL group_replication_bootstrap_groupON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_groupOFF;其他节点加入组10. 性能监控工具10.1 内置监控MySQL 8提供了性能模式Performance Schema和sys schema-- 查看资源消耗最高的SQL SELECT * FROM sys.statement_analysis LIMIT 10; -- 查看锁等待 SELECT * FROM sys.innodb_lock_waits;10.2 外部工具推荐工具Percona PMMPercona Monitoring and ManagementMySQL Enterprise MonitorPrometheus Grafana mysqld_exporter安装mysqld_exporter后可以监控数千项MySQL指标并在Grafana中可视化展示。
阅读完成 · 觉得有帮助?