这是 database/mysql-install.md 的每次改动内容,按时间从新到旧。其他文章一起提交的部分不会出现在这里。
#1
2026-10-18
+82
−0
docs: 新增数据库/虚拟化/监控/备份 4 个分类和 13 篇文章
a0b4968
new file mode 100644
@@ -0,0 +1,82 @@
+---
+tags: [MySQL, 安装, 数据库]
+order: 10
+---
+
+# MySQL 安装与初始化
+
+## 场景
+
+新服务器要装 MySQL,给内部应用用。要能远程连、字符集正确、开机自启。
+
+## 前置条件
+
+- 知道应用连过来的网段
+- 磁盘规划好:数据目录别放系统盘
+- 确认没有装过 MariaDB 或旧版本(会冲突)
+
+## 配置
+
+```bash
+# CentOS / Rocky / 麒麟
+dnf install -y mysql-server
+systemctl enable --now mysqld
+
+# Ubuntu / Debian
+apt install -y mysql-server
+
+# 取初始密码
+grep 'temporary password' /var/log/mysqld.log
+
+# 安全初始化:改密码、删匿名用户、禁 root 远程
+mysql_secure_installation
+```
+
+字符集(8.0 默认 `utf8mb4`,5.7 要手动改):
+
+```ini
+[mysqld]
+character-set-server = utf8mb4
+collation-server = utf8mb4_0900_ai_ci
+default-time-zone = '+08:00'
+max_connections = 500
+```
+
+```bash
+systemctl restart mysqld
+```
+
+建业务账号:
+
+```sql
+CREATE DATABASE appdb DEFAULT CHARACTER SET utf8mb4;
+CREATE USER 'app'@'10.0.0.%' IDENTIFIED BY '强密码';
+GRANT ALL PRIVILEGES ON appdb.* TO 'app'@'10.0.0.%';
+FLUSH PRIVILEGES;
+```
+
+## 验证
+
+```bash
+systemctl status mysqld
+mysql -u root -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'character_set_server';"
+mysql -h 10.0.0.5 -u app -p -e "SELECT 1;"
+ss -lntp | grep 3306
+```
+
+## 回滚
+
+```bash
+systemctl disable --now mysqld
+dnf remove -y mysql-server
+rm -rf /var/lib/mysql
+```
+
+## 坑
+
+- **数据目录放系统盘**,日志一多就把根分区写满。
+- 5.7 默认 `latin1`,建库不改字符集,中文全靠运气。
+- `bind-address` 默认只有 `127.0.0.1`,远程连不上。
+- 防火墙/安全组没开 3306,应用一直超时。
+- root 只允许本地登录是默认安全策略,不要图省事开远程。
+- 时区不对会导致 `NOW()` 差 8 小时,写进业务数据的都是错的时间。