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