CentOS,一个基于Red Hat Enterprise Linux(RHEL)的社区版操作系统,因其稳定性和广泛的社区支持,成为部署MySQL的理想平台
本文将详细介绍如何在CentOS系统上安装MySQL-Server,涵盖准备工作、安装步骤、配置优化及安全加固,旨在帮助用户高效、安全地完成部署
一、安装前的准备工作 1. 确认CentOS版本 在进行任何安装操作之前,首先确认你的CentOS版本
不同版本的CentOS可能略有差异,尤其是安装命令和依赖关系
使用以下命令查看系统版本: bash cat /etc/centos-release 2. 系统更新 确保你的系统处于最新状态,这有助于避免软件包冲突,并获取最新的安全补丁
使用以下命令进行系统更新: bash sudo yum update -y 3. 安装wget和GCC wget是一个用于从网络上自动下载文件的自由工具,而GCC(GNU Compiler Collection)是Linux下最常用的编译器之一
安装MySQL时可能会用到这些工具,因此建议提前安装: bash sudo yum -y install wget gcc 二、添加MySQL官方Yum仓库并安装MySQL-Server 1. 添加MySQL官方Yum仓库 由于CentOS的默认仓库中可能不包含MySQL的最新版本,因此建议通过官方Yum源进行安装
以下以MySQL8.0为例,展示如何添加官方仓库: bash wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-11.noarch.rpm 注意:对于CentOS7用户,应使用与系统版本相匹配的仓库文件
如需安装MySQL5.7,则下载并安装对应的`mysql57-community-release-el7-x.noarch.rpm`文件
2. 安装MySQL-Server 添加仓库后,即可通过Yum安装MySQL-Server: bash sudo yum install mysql-community-server -y 安装过程可能需要一些时间,请耐心等待
安装完成后,MySQL服务将自动安装但不会自动启动
3. 启动MySQL服务并设置开机自启 使用以下命令启动MySQL服务,并设置其开机自启: bash sudo systemctl start mysqld sudo systemctl enable mysqld 4. 获取初始密码 MySQL首次启动时会自动生成一个临时密码,该密码存储在`/var/log/mysqld.log`文件中
使用以下命令查看临时密码: bash sudo grep temporary password /var/log/mysqld.log 记下此密码,因为稍后你需要用它来登录MySQL并进行安全配置
三、MySQL安全初始化配置 获取临时密码后,接下来进行MySQL的安全初始化配置
使用`mysql_secure_installation`脚本,按照提示完成以下关键设置: -修改root密码:输入临时密码后,设置新的root密码
建议设置高强度密码,包含大小写字母、数字和特殊字符
-移除匿名用户:为了提高安全性,建议删除默认的匿名用户
-禁止root远程登录:除非有特殊需求,否则建议禁止root用户从远程登录
-删除测试数据库:MySQL默认包含一个名为`test`的测试数据库,建议删除以避免潜在的安全风险
-立即重载权限表:确保所有更改立即生效
bash sudo mysql_secure_installation 按照提示操作,直至完成所有安全设置
四、MySQL配置优化 默认安装的MySQL配置可能并不适合所有生产环境,因此需要根据服务器硬件资源和业务需求进行调整
以下是一些常见的配置优化建议: 1. 修改配置文件(/etc/my.cnf) 打开MySQL配置文件`/etc/my.cnf`,在`【mysqld】`部分进行以下调整: -内存分配:根据服务器物理内存大小,调整`innodb_buffer_pool_size`参数
一般建议设置为物理内存的50%-70%
-最大连接数:根据并发量调整`max_connections`参数
默认值可能过低,导致在高并发场景下连接失败
-日志与持久化:启用慢查询日志(`slow_query_log=1`),并设置合适的`long_query_time`值
同时,确保`innodb_flush_log_at_trx_commit=1`以保证事务的持久性
ini 【mysqld】 innodb_buffer_pool_size=2G max_connections=200 slow_query_log=1 long_query_time=2 innodb_flush_log_at_trx_commit=1 保存更改并重启MySQL服务以使配置生效: bash sudo systemctl restart mysqld 2. 用户权限管理 避免直接使用root账户操作数据库,建议创建专用用户并限制其权限
例如,创建一个名为`app_user`的用户,并授予其对特定数据库`app_db`的SELECT、INSERT、UPDATE和DELETE权限: sql CREATE USER app_user@localhost IDENTIFIED BY StrongPassword123!; GRANT SELECT, INSERT, UPDATE, DELETE ON app_db. TO app_user@localhost; FLUSH PRIVILEGES; 3.索引优化与查询分析 使用EXPLAIN命令分析慢查询,并根据分析结果添加合适的索引
例如,对于以下查询: sql SELECT - FROM orders WHERE user_id=100; 如果执行速度较慢,可以考虑在`user_id`字段上创建索引: sql CREATE INDEX idx_user_id ON orders(user_id); 五、MySQL安全加固 数据库安全是运维工作的核心,需要从多层面进行防护
以下是一些常见的安全加固措施: 1.防火墙设置 仅允许特定IP地址访问MySQL端口(默认3306)
使用firewalld进行配置: bash sudo firewall-cmd --permanent --add-rich-rule=rule family=ipv4 source address=192.168.1.0/24 port protocol=tcp port=3306 accept sudo firewall-cmd --reload 2. SSL加密传输 启用MySQL的SSL功能,防止数据在传输过程中被窃听
首先,使用`mysql_ssl_rsa_setup`命令生成SSL证书和密钥: bash sudo mysql_ssl_rsa_setup --uid=mysql 然后,在MySQL配置文件中添加以下设置,要求所有连接使用SSL加密: ini 【mysqld】 require_secure_transport=ON 保存更改并重启MySQL服务
3. 定期备份与监控 使用`mysqldump`进行逻辑备份,确保数据的可恢复性
例如,备份所有数据库: bash mysqldump -u root -p --all-databases > backup.sql 同时,部署监控工具(如Prometheus + Grafana)实时跟踪连接数、查询吞吐量等指标,及时发现并解决潜在问题
六、常见问题与解决方案 1. 服务启动失败 如果MySQL服务启动失败,检查`/var/log/mysqld.log`日志文件以定位原因
常见原因包括端口冲突、配置文件错误等
2.忘记root密码 如果忘记了root密码,可以通过编辑MySQL配置文件`/etc/my.cnf`,在`【mysqld】`部分添加`skip-grant-tables`选项,然后重启服务
无密码登录后,使用`ALTER USER`命令重置密码,最后移除`skip-grant-tables`选项并重启服务
七、总结 CentOS与MySQL的组合虽非最新,但其稳定性和成熟的社区支持仍使其成为生产环境的可靠选择
通过本文的介绍,你已经掌握了在CentOS上安装MySQL-Server的完整流程,包括准备工作、安装步骤、配置优化及安全加固
运维人员需平衡性能与安全,定期更新补丁并监控运行状态
对于新项目,可评估迁移至CentOS Stream或AlmaLinux等后续替代系统,以获