Skip to content

MySQL 数据库初始化指南

适用场景:使用外部 MySQL 数据库而非 Docker 内嵌数据库时,需提前手动创建数据库和用户。

查询现有数据库和用户

以 MySQL root 或具有创建用户权限的账号登录后执行:

sql
-- 查看所有数据库
SHOW DATABASES;

-- 查看所有用户
SELECT user, host FROM mysql.user;

创建数据库和用户

以 MySQL root 或具有创建用户权限的账号登录后执行:

sql
-- 1. 创建数据库(utf8mb4 字符集)
CREATE DATABASE IF NOT EXISTS ssh_upgrade
  DEFAULT CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

-- 2. 创建用户(% 表示允许任意 IP 连接,生产环境建议限制 IP)
CREATE USER IF NOT EXISTS 'ssh_upgrade'@'%'
  IDENTIFIED BY 'your_password';

-- 3. 授权
GRANT ALL PRIVILEGES ON ssh_upgrade.* TO 'ssh_upgrade'@'%';
FLUSH PRIVILEGES;

-- 4. 验证
SHOW DATABASES LIKE 'ssh_upgrade';
SELECT user, host FROM mysql.user WHERE user = 'ssh_upgrade';

连接参数

创建完成后,将以下参数填入服务端部署的环境变量中:

方式一:env.sh / .env 配置文件

bash
export DB_DRIVER=mysql
export DB_HOST=127.0.0.1        # 改为实际数据库地址
export DB_PORT=3306
export DB_USER=ssh_upgrade
export DB_PASSWORD=your_password # 改为实际密码
export DB_NAME=ssh_upgrade

方式二:docker-compose.yml 环境变量

yaml
environment:
  - DB_DRIVER=mysql
  - DB_HOST=127.0.0.1          # 改为实际数据库地址
  - DB_PORT=3306
  - DB_USER=ssh_upgrade
  - DB_PASSWORD=your_password  # 改为实际密码
  - DB_NAME=ssh_upgrade

快速验证连接

bash
mysql -h 127.0.0.1 -P 3306 -u ssh_upgrade -p ssh_upgrade -e "SELECT 1"

输入密码后返回 1 即表示连接正常。

安全建议

限制 IP 访问

生产环境将 '%' 替换为具体 IP 段:

sql
-- 仅允许 192.168.1.x 网段
CREATE USER IF NOT EXISTS 'ssh_upgrade'@'192.168.1.%'
  IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON ssh_upgrade.* TO 'ssh_upgrade'@'192.168.1.%';

-- 仅允许本机
CREATE USER IF NOT EXISTS 'ssh_upgrade'@'localhost'
  IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON ssh_upgrade.* TO 'ssh_upgrade'@'localhost';

最小权限

如不需要 ALL PRIVILEGES,可按需授予:

sql
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, DROP
  ON ssh_upgrade.* TO 'ssh_upgrade'@'%';

强密码

密码建议 16 位以上,包含大小写字母、数字和特殊字符。

首次启动提示

数据库创建完成后启动服务端,首次访问管理平台时会自动跳转至初始化引导页,在 Web 界面设置管理员账号即可。

如因 IP 白名单无法登录,可在启动时添加 --unlock 参数解除限制:

bash
docker compose exec ssh-upgrade-web /app/server --unlock

/usr/local/bin/ssh-upgrade-server --unlock

← 返回服务端部署