# SQLite在线管理系统 **Repository Path**: chinanics/sqliteadmin ## Basic Information - **Project Name**: SQLite在线管理系统 - **Description**: 基于 Flask 开发的 SQLite 数据库管理系统,采用类似 phpMyAdmin 的界面风格,提供直观的数据库管理和 SQL 查询功能。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-11 - **Last Updated**: 2026-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SQLite 管理系统 基于 Flask 开发的 SQLite 数据库管理系统,采用类似 phpMyAdmin 的界面风格,提供直观的数据库管理和 SQL 查询功能。 ## 目录 - [功能特性](#功能特性) - [系统要求](#系统要求) - [安装步骤](#安装步骤) - [快速开始](#快速开始) - [详细使用说明](#详细使用说明) - [安全配置](#安全配置) - [目录结构](#目录结构) - [常见问题](#常见问题) --- ## 功能特性 ### 数据库管理 - 添加/移除 SQLite 数据库文件 - 服务器端文件浏览器,支持浏览多个目录 - 白名单目录控制,保障系统安全 ### 数据浏览 - 左侧导航树显示数据库和表结构 - 浏览表数据,支持点击列名排序、分页浏览、自定义每页记录数 - 查看表结构(字段名、类型、主键、默认值等) ### SQL 查询 - 可视化 SQL 编辑器 - 支持 Ctrl+Enter 快捷执行 - 查询结果表格展示 ### 用户系统 - 登录认证,保护系统访问 - 修改密码功能 - 密码 SHA-256 哈希存储 --- ## 系统要求 - Python 3.8 或更高版本 - Flask 3.0+ --- ## 安装步骤 ### 1. 克隆或下载项目 ```bash cd F:\code\SQLiteAdmin ``` ### 2. 安装依赖 ```bash pip install -r requirements.txt ``` ### 3. 创建测试数据库(可选) ```bash python create_test_db.py ``` ### 4. 启动服务 ```bash python app.py ``` 服务默认运行在 `http://localhost:5005` --- ## 快速开始 ### 1. 登录系统 打开浏览器访问 `http://localhost:5005` **默认账号:** - 用户名:`admin` - 密码:`admin123` > ⚠️ 首次登录后请立即修改密码! ### 2. 添加数据库 1. 点击左侧 **"+ 添加数据库"** 按钮 2. 点击 **"浏览文件"** 选择服务器上的 `.db` 文件 3. 可自定义数据库名称(留空则使用文件名) 4. 点击 **"添加"** ### 3. 浏览数据 1. 左侧导航栏点击数据库名称 2. 点击表名查看数据 3. 切换标签页查看"浏览数据"/"表结构"/"SQL查询" --- ## 详细使用说明 ### 添加数据库 系统提供两种添加方式: **方式一:服务器文件浏览器** - 点击"浏览文件"按钮 - 在弹窗中浏览允许访问的目录 - 点击 `.db` 文件即可选择 **方式二:直接输入路径** - 在文件浏览器中手动输入完整路径 - 路径必须在"允许访问目录"白名单内 ### 浏览数据表 进入数据库后: - **左侧导航**:显示所有数据表,点击可切换 - **浏览数据**:显示表内容,支持点击列名排序(升序/降序切换)、翻页浏览、自定义每页记录数(20/50/100/200/500) - **表结构**:显示字段定义、类型、主键等信息 ### 执行 SQL 查询 1. 点击顶部 **"📝 SQL 查询"** 按钮 2. 在文本框中输入 SQL 语句 3. 点击 **"▶ 执行 SQL"** 或按 `Ctrl+Enter` **支持的 SQL 类型:** - `SELECT` 查询:显示结果表格 - `INSERT/UPDATE/DELETE`:显示影响行数 - `CREATE/DROP/ALTER`:执行表结构操作 - 所有标准 SQLite 语句 **常用示例:** ```sql -- 查询所有学生 SELECT * FROM students; -- 查询成绩大于90分的学生 SELECT s.name, c.course_name, sc.score FROM scores sc JOIN students s ON sc.student_id = s.id JOIN courses c ON sc.course_id = c.id WHERE sc.score > 90; -- 统计每门课程平均分 SELECT c.course_name, AVG(sc.score) as avg_score FROM scores sc JOIN courses c ON sc.course_id = c.id GROUP BY c.course_name; ``` ### 修改密码 1. 左侧导航点击 **"🔒 修改密码"** 2. 输入原密码 3. 输入新密码(至少6位) 4. 确认新密码后保存 ### 管理允许访问目录 为了安全,系统仅允许访问白名单中的目录: 1. 左侧导航点击 **"📁 允许访问目录"** 2. 查看当前允许的目录列表 3. 输入新目录路径,点击 **"添加目录"** 4. 可移除已添加的目录(默认 `db` 目录不可移除) **文件浏览器顶部会显示可快速切换的目录按钮。** --- ## 安全配置 ### 白名单目录机制 系统采用白名单机制控制文件访问: **Windows 环境示例:** ```json [ "F:\\code\\SQLiteAdmin\\db", "D:\\data\\sqlite", "C:\\databases" ] ``` **Linux / macOS 环境示例:** ```json [ "/opt/sqliteadmin/db", "/home/user/databases", "/var/data/sqlite" ] ``` **安全特性:** - 使用 `os.path.realpath()` 防止符号链接绕过 - 路径前缀匹配,确保文件在允许目录内 - 默认仅允许项目 `db` 目录 ### 密码存储 - 密码使用 SHA-256 哈希存储,不保存明文 - 用户数据保存在 `users.json` ### Session 管理 - 基于 Flask Session 的登录状态 - 所有管理路由均需要登录验证 - 未登录自动跳转登录页 ### 生产环境建议 1. 修改默认 `SECRET_KEY` 2. 修改默认管理员密码 3. 使用 HTTPS 4. 限制访问 IP 5. 定期备份 `users.json` 和 `databases.json` --- ## 目录结构 ``` SQLiteAdmin/ ├── app.py # Flask 主应用 ├── requirements.txt # Python 依赖 ├── create_test_db.py # 测试数据库生成脚本 ├── README.md # 使用文档 ├── db/ # SQLite 数据库文件目录 │ └── test_school.db # 测试数据库(学生/课程/成绩) ├── templates/ # HTML 模板 │ ├── base.html # 基础布局模板 │ ├── login.html # 登录页面 │ ├── index.html # 首页 │ ├── database.html # 数据库详情页 │ ├── table.html # 表数据页 │ ├── query.html # SQL 查询页 │ └── change_password.html # 修改密码页 ├── users.json # 用户配置文件(自动生成) ├── databases.json # 数据库列表配置(自动生成) └── allowed_dirs.json # 允许访问目录配置(自动生成) ``` --- ## 常见问题 ### Q: 无法访问其他目录的文件? A: 需要在"允许访问目录"中添加该目录路径。系统出于安全考虑,仅允许访问白名单中的目录。 ### Q: 忘记密码怎么办? A: 删除 `users.json` 文件,重启服务后会恢复默认账号(admin/admin123)。 ### Q: 如何备份数据库配置? A: 备份以下文件: - `databases.json` - 数据库列表 - `allowed_dirs.json` - 目录白名单 - `users.json` - 用户信息 - `db/` 目录 - 实际数据库文件 ### Q: SQL 查询报错? A: 检查: 1. SQL 语法是否正确 2. 表名和字段名是否存在 3. 表名包含特殊字符时使用单引号包裹 ### Q: 如何修改服务端口? A: 编辑 `app.py` 最后一行: ```python app.run(debug=True, host='0.0.0.0', port=5005) # 修改 port 参数 ``` ### Q: 支持哪些 SQLite 文件后缀? A: 系统支持以下后缀: - `.db` - `.sqlite` - `.sqlite3` - `.db3` --- ## 更新日志 ### v1.1.0 - 数据预览支持点击列名排序(升序/降序切换) - 分页浏览,支持上一页/下一页/页码跳转 - 自定义每页记录数(20/50/100/200/500) - 排序和分页状态通过 URL 参数保持 ### v1.0.0 - 基础数据库管理功能 - phpMyAdmin 风格界面 - 用户登录认证 - 白名单目录安全机制 - SQL 查询功能 - 服务器端文件浏览器 --- ## 许可证 MIT License