Oamc

MySQL 安装与初始化

本页目录

场景

新服务器要装 MySQL,给内部应用用。要能远程连、字符集正确、开机自启。

前置条件

  • 知道应用连过来的网段
  • 磁盘规划好:数据目录别放系统盘
  • 确认没有装过 MariaDB 或旧版本(会冲突)

配置

# 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 要手动改):

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci
default-time-zone = '+08:00'
max_connections = 500
systemctl restart mysqld

建业务账号:

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;

验证

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

回滚

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 小时,写进业务数据的都是错的时间。