🚀 2025.10.04学习总结:智能体项目登录问题 + Docker Demo 环境搭建

87 阅读3分钟

今天主要折腾了两个方向:

  1. 智能体项目(Spring Boot + PostgreSQL)里遇到的登录失败问题。
  2. 用 Docker 搭建 Vue3 + Flask + MySQL 的库存管理小系统 Demo。

🔑 一、智能体项目:登录失败排查

遇到的问题

  1. 后端数据库连接失败

    • application.yml 里配置的数据库账号/密码和实际 PostgreSQL 不一致,报错:

      password authentication failed for user ...
      
  2. 登录一直失败

    • 前端输入 admin / 123456,后端日志能查到用户,但密码校验不通过。
  3. 数据库密码是明文

    • system_users 表里的 password = 123456(明文)。
    • 但后端逻辑是 带 salt 的双重 MD5,自然比对不上。
  4. salt 字段为空

    • salt 列是空值,后端校验必须用 password + salt 才能正确。

解决方法

  1. 修正数据库配置
    application.yml 里改成正确的 PostgreSQL 账号/密码:

    username: postgres
    password: 123456
    
  2. 生成加密后的密码
    后端用的加密逻辑:

    md5(md5("123456" + salt) + salt)
    

    用 Java 或 Python 算出加密结果。

  3. 更新数据库用户信息
    system_users 表里执行:

    UPDATE system_users
    SET password = '<加密后的MD5>',
        salt = '67bb1f3dca25ffc420f04d2e'
    WHERE name = 'admin';
    
  4. 再次尝试登录
    前端输入 admin / 123456 → 后端比对成功 → 登录正常。


🐳 二、Docker Demo:Vue3 + Flask + MySQL

我用 Docker Compose 搭了一个简单的库存管理系统,分成 前端 / 后端 / 数据库 三个容器。

用到的 Docker 指令

  • docker pull <image>:拉取镜像,例如 docker pull mysql:8.0
  • docker build -t <name> .:构建镜像,-t 指定名字
  • docker run -p 主机端口:容器端口 <image>:运行容器并映射端口
  • docker ps:查看正在运行的容器
  • docker stop <容器名>:停止容器
  • docker-compose up --build:构建并运行所有服务
  • docker-compose down:停止并删除容器

遇到的问题 & 解决办法

  1. 拉取 Python 镜像失败

    • 报错:failed to fetch oauth tokenEOF
    • 原因:访问不到 DockerHub
    • ✅ 解决:换国内镜像源(阿里云/中科大/清华)

  1. MySQL 端口冲突

    • 报错:ports are not available: 3306
    • 原因:本机 MySQL 占用了 3306
    • ✅ 解决:改成 3307:3306

  1. 前端访问不到(localhost:5173 报 404)

    • 原因:Vite 默认只监听 127.0.0.1

    • ✅ 解决:在 package.json 改:

      "scripts": {
        "dev": "vite --host 0.0.0.0"
      }
      

  1. 前后端跨域问题

    • 表现:浏览器请求 API 报 CORS 错误

    • ✅ 解决:Flask 启用跨域

      from flask_cors import CORS
      CORS(app)
      

  1. 数据库中文乱码

    • 表现:MySQL 显示中文是乱码

    • ✅ 解决:连接时加上 charset='utf8mb4'

      pymysql.connect(..., charset='utf8mb4')
      

  1. Workbench 删除报错 (1175 Safe update mode)

    • 原因:MySQL Workbench 默认安全模式,不允许无条件 DELETE

    • ✅ 解决:

      • 写成 DELETE FROM items WHERE 1=1;
      • 或关闭 Safe Update 模式

✅ 总结

  • 智能体项目主要坑在 密码校验逻辑,需要处理好 salt 和 MD5。
  • Docker Demo 踩到的坑大多是 镜像下载 / 端口冲突 / 跨域 / 字符集 / Workbench安全模式
  • 折腾了一整天,总算跑起来了,前端能增删改查商品,后端能存 MySQL。