Ubuntu安装MySQL踩坑记录

安装教程如下

https://www.modb.pro/db/1787599262368468992

踩坑一:tcp连接mysql没问题,socket连接mysql失败

全局搜索 mysql.sock

sudo find / -type s -name "*mysql*.sock" 2>/dev/null

richiezhang@computer:/$ sudo find / -type s -name "*mysql*.sock" 2>/dev/null
/tmp/systemd-private-8e431245bb61421e8779371ae6fd1448-mysql.service-HljfC6/tmp/mysql.sock
/tmp/systemd-private-8e431245bb61421e8779371ae6fd1448-mysql.service-HljfC6/tmp/mysqlx.sock

这是 systemd 的私有临时目录(PrivateTmp)机制导致的,常见于 Ubuntu/Debian 等使用 systemd 的系统

systemd 235+ 版本开始,许多服务(包括 mysql.service)默认启用了:

PrivateTmp=true

这意味着:

  • 服务的 /tmp 目录是隔离的,实际映射到 /tmp/systemd-private-<hash>-mysql.service-<random>/tmp/
  • 宿主机直接访问 /tmp/mysql.sock 是找不到的
  • 但 MySQL 服务内部看到的 socket 路径仍是 /tmp/mysql.sock

所以 SHOW VARIABLES LIKE 'socket'; 返回 /tmp/mysql.sock,但你在宿主机的 /tmp 下看不到它。

解决方案,/etc/systemd/system/mysql.service 中 PrivateTmp=false

[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=notify
User=mysql
Group=mysql
ExecStart=/usr/local/mysql-8.4.7/bin/mysqld --defaults-file=/etc/my.cnf
Restart=always
RestartSec=5
TimeoutSec=300
StandardOutput=null
StandardError=journal
LimitNOFILE=65536

# 安全加固(可选)
PrivateTmp=false
ProtectHome=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.targe

踩坑二:mysql重复启动,报错找不到pid文件

原因是因为ubuntu每次开机会自动删除/var/run/mysqld/目录

解决方案,更改 /etc/my.cnf

[mysqld]
datadir = /usr/local/mysql-8.4.7/data
socket = /tmp/mysql.sock

log-error = /var/log/mysql/mysqld.log

#重启后/var/run/mysqld/目录会消失,所以注释
#pid-file = /var/run/mysqld/mysqld.pid

basedir = /usr/local/mysql-8.4.7
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇