导读:本期聚焦于小伙伴创作的《如何在Linux上配置MySQL?详细安装与配置步骤解析》,敬请观看详情。把MySQL跑在Linux上最棘手的往往不是安装命令,而是配置文件里那些影响连接与性能的参数。以Ubuntu和CentOS为例,用包管理器装完服务端后,默认绑定地址常限制为本地回环,远程客户端根本连不上。初始化阶段若没运行安全脚本,root账户可能空密码暴露。本文从仓库安装、my.cnf核心项调整、用户授权到开机自启,逐一说明实操要点,帮你避开权限错误与编码乱码问题,快速搭建可稳定对外服务的MySQL环境。

在Linux系统中部署MySQL是后端服务搭建的基础环节。不同发行版的包管理工具有所差异,但整体流程都包含软件安装、初始化配置、网络与权限设定几个阶段。下面以常见的Ubuntu 22.04和CentOS 7为例,完整说明从零开始配置MySQL的过程。

如何在Linux上配置MySQL?详细安装与配置步骤解析

一、使用包管理器安装MySQL

Ubuntu平台默认软件源中提供的是MySQL社区版,可直接通过apt完成安装。安装前建议先更新软件索引,避免因依赖版本过旧导致装包失败。执行下面这组命令即可安装服务端核心程序:

sudo apt update
sudo apt install -y mysql-server

CentOS 7的官方源里MySQL被MariaDB替代,若要用原版MySQL,需先导入官方Yum仓库。下载并安装仓库配置包后,再用yum安装。注意安装时会自动解决依赖,但过程可能比Ubuntu稍慢。

sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
sudo yum install -y mysql-community-server

安装完成后,Ubuntu下服务一般已自动启动,而CentOS需要手动开启。可以用systemctl检查运行状态,确认进程正常拉起后再进行后续配置。如果启动报错,多半是端口占用或数据目录权限不正确。

二、基础安全初始化

新装好的MySQL存在多个安全隐患,最典型的是root用户允许空密码登录,以及匿名账户存在。MySQL提供了专用安全脚本,交互式引导你设置root密码、删除测试库。Ubuntu用户直接执行以下命令:

sudo mysql_secure_installation

脚本会询问是否开启密码强度校验、是否修改root密码等。生产环境务必选择高强度密码策略,并移除test数据库。CentOS执行同样脚本,但部分版本初始root密码写在日志里,需要先抓取再改密。

sudo grep 'temporary password' /var/log/mysqld.log

安全脚本运行完毕后,建议用root登录验证。若使用socket方式登录被拒,可能是auth_socket插件导致,需要改为密码认证。这一细节常被忽略,造成本地连不上的错觉。

三、核心配置文件my.cnf调整

MySQL的主配置文件通常位于/etc/mysql/my.cnf/etc/my.cnf,实际参数多放在conf.d目录的子文件里。最关键的几个配置项涉及监听地址、字符集和连接数。默认bind-address为127.0.0.1,仅允许本机访问。

[mysqld]
bind-address = 0.0.0.0
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_connections = 200

将bind-address改为0.0.0.0后,MySQL会监听所有网卡,配合防火墙放通3306端口即可远程连接。字符集设为utf8mb4能完整存储表情符,避免传统utf8截断问题。修改配置后必须重启服务生效。

sudo systemctl restart mysql

如果机器内存较小,还应在配置中限制缓冲池大小,防止OOM。InnoDB缓冲池默认占用大量内存,可参考下面设置,根据物理内存按比例下调。

[mysqld]
innodb_buffer_pool_size = 256M

四、创建用户与远程授权

root账户不应直接用于业务连接。推荐建立专属用户并限制其库表权限。以下语句创建用户appuser,允许从任意主机连接,并授予demo库的全部操作权。

CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON demo.* TO 'appuser'@'%';
FLUSH PRIVILEGES;

若系统启用了防火墙,还要放通3306。Ubuntu用ufw,CentOS用firewalld。仅开放必要端口,不要直接关闭防火墙。授权后可用客户端工具测试连通性,确认无access denied错误。

sudo ufw allow 3306/tcp

对于更高安全需求,可限定用户来源IP,例如将'@'%'改为'@'192.168.0.1',缩小暴露面。同时定期用SHOW PROCESSLIST观察连接数,防止配置的最大连接被耗尽。

五、设置开机自启与日常维护

服务器重启后希望MySQL自动运行,需启用systemctl自启。大多数发行版安装包已配置,但手动确认更稳妥。执行enable命令后,下次开机即拉起服务。

sudo systemctl enable mysql

日常维护中,可利用mysqladmin查看状态或备份数据。逻辑备份推荐mysqldump,它生成SQL文本,便于跨版本恢复。下面命令将demo库导出到文件。

mysqldump -u appuser -p demo > demo_backup.sql

当遇到性能瓶颈,可开启慢查询日志定位问题SQL。在配置中增加slow_query_log项,设定阈值,长期收集后借助工具分析。保持配置简洁、权限最小、备份规律,Linux上的MySQL便能稳定支撑业务。

MySQLLinux数据库配置修改时间:2026-08-08 00:42:31

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。