You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04源码安装MySQL后如何启动并正常使用?

问题核心原因

两个报错本质是源码安装MySQL不会自动完成服务注册、目录初始化、环境配置流程:

  • Failed to start mysqld.service: Unit mysqld.service not found:系统中没有注册mysqld对应的systemd服务单元
  • Can't connect to local MySQL server through socket:MySQL服务本身未成功启动,自然不会生成socket监听文件
    /usr/local/mysql/bin/mysql --version能正常输出版本,说明编译的二进制程序本身没有问题,按下面步骤修复即可。

修复步骤

  • 提前创建依赖目录并配置权限
# 创建mysql运行系统用户(已存在可跳过)
useradd -r -s /sbin/nologin mysql
# 创建数据存储、socket运行、日志存储目录
mkdir -p /usr/local/mysql/data
mkdir -p /var/run/mysqld
mkdir -p /var/log/mysql
# 给所有MySQL相关目录分配正确的属主权限
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /var/run/mysqld
chown -R mysql:mysql /var/log/mysql
  • 初始化MySQL数据目录
    源码安装完成后必须先初始化数据目录才能启动服务,直接执行:
cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

初始化完成后终端会输出root用户的临时初始密码,务必保存,第一次登录需要用到。

  • 先手动启动验证程序可用性
    先跳过systemd直接启动服务,确认二进制程序运行正常,避免后续服务配置走弯路:
/usr/local/mysql/bin/mysqld_safe --user=mysql &

等待3~5秒后执行ps aux | grep mysqld,如果存在mysqld进程,再执行/usr/local/mysql/bin/mysql -uroot -p输入之前保存的临时密码,能成功登录即说明核心程序运行正常。

  • 配置systemd服务实现系统管理
    手动创建systemd服务单元文件/usr/lib/systemd/system/mysqld.service,写入以下内容:
[Unit]
Description=MySQL 8.0 Server
After=network.target

[Service]
Type=forking
User=mysql
Group=mysql
PIDFile=/var/run/mysqld/mysqld.pid
ExecStart=/usr/local/mysql/bin/mysqld_safe --user=mysql
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

保存后执行systemctl daemon-reload重载系统服务配置,之后先杀掉之前手动启动的mysqld进程,就可以用systemctl正常管理服务:

pkill mysqld
systemctl start mysqld
# 配置开机自启(按需执行)
systemctl enable mysqld
  • 全局命令与配置文件校验
    • 配置全局命令软链接,避免直接执行mysql等命令时提示找不到:
ln -sf /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -sf /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin
  • 检查MySQL选项文件(默认路径/etc/my.cnf),确认以下路径配置和实际创建的目录完全一致,[client]段必须和[mysqld]段配置相同的socket路径,否则客户端连接会报错:
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/var/run/mysqld/mysqld.sock
log-error=/var/log/mysql/error.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
socket=/var/run/mysqld/mysqld.sock

如果执行以上步骤后服务仍无法启动,直接查看错误日志/var/log/mysql/error.log,所有启动失败的具体原因(比如参数非法、端口占用、权限不足)都会在日志中明确标注,对照日志调整即可。


内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:18:21