数据库设置
本文档介绍如何配置 Mindra 开源版本所需的 MySQL 数据库。
数据库概述
Mindra 使用 MySQL 数据库存储以下数据:
- 用户账户信息 (
users表) - 激活码信息 (
activation表)
数据库架构
users 表
存储用户基本信息:
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | INT (主键) | 用户 ID,自增 |
| username | VARCHAR(255) | 用户名 |
| password | VARCHAR(255) | 密码哈希值 |
| created_at | TIMESTAMP | 账户创建时间 |
| credit_balance | DECIMAL(12,4) | 用户积分余额 |
activation 表
存储用户激活码:
| 字段 | 类型 | 说明 |
|---|---|---|
| activation_code | VARCHAR(255) (主键) | 激活码 |
| user_id | INT (外键) | 关联的用户 ID |
创建数据库
方法一:使用提供的 SQL 文件
- 打开终端,连接到 MySQL:
mysql -u root -p
- 执行以下命令创建数据库:
-- 创建数据库
CREATE DATABASE mindra CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 使用数据库
USE mindra;
-- 执行提供的 SQL 文件
SOURCE /path/to/mindra.sql;
方法二:手动执行 SQL
- 登录 MySQL:
mysql -u root -p
- 创建数据库和表:
-- 创建数据库
CREATE DATABASE mindra CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 使用数据库
USE mindra;
-- 创建 users 表
CREATE TABLE `users` (
`user_id` int NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
`password` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`credit_balance` decimal(12,4) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
-- 创建 activation 表
CREATE TABLE `activation` (
`activation_code` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`user_id` int NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`activation_code`),
UNIQUE KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
创建数据库用户(可选)
为了安全起见,建议创建专用的数据库用户:
-- 创建用户
CREATE USER 'mindra_user'@'localhost' IDENTIFIED BY 'your_password';
-- 授权
GRANT ALL PRIVILEGES ON mindra.* TO 'mindra_user'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
插入测试数据(可选)
添加测试用户
-- 插入测试用户(密码为 123456 的 SHA256 哈希值)
INSERT INTO users (username, password, credit_balance)
VALUES ('test', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', 100.0000);
添加激活码
-- 插入激活码(关联用户 ID 1)
INSERT INTO activation (activation_code, user_id)
VALUES ('TEST001', 1);
配置数据库连接
数据库创建完成后,需要在 config.yaml 中配置连接信息:
database:
host: "localhost" # 数据库主机地址
database: "mindra" # 数据库名称
user: "root" # 数据库用户名
password: "your_password" # 数据库密码
验证数据库连接
创建测试脚本 test_db.py:
import pymysql
import yaml
from pathlib import Path
# 读取配置
with open(Path("config.yaml"), 'r', encoding='utf-8') as f:
config = yaml.safe_load(f)
db_config = config['database']
# 连接数据库
try:
connection = pymysql.connect(
host=db_config['host'],
database=db_config['database'],
user=db_config['user'],
password=db_config['password'],
cursorclass=pymysql.cursors.DictCursor
)
print("数据库连接成功!")
# 测试查询
with connection.cursor() as cursor:
cursor.execute("SELECT 1")
result = cursor.fetchone()
print(f"测试查询成功: {result}")
connection.close()
except Exception as e:
print(f"数据库连接失败: {e}")
运行测试:
python test_db.py
数据库管理工具推荐
图形化工具
- MySQL Workbench (官方工具)
- Navicat for MySQL
- DBeaver (免费开源)
- phpMyAdmin (Web 界面)
命令行工具
# 连接到 MySQL
mysql -u username -p
# 查看所有数据库
SHOW DATABASES;
# 使用 mindra 数据库
USE mindra;
# 查看所有表
SHOW TABLES;
# 查看表结构
DESCRIBE users;
常见问题
无法连接到 MySQL
错误信息: Can't connect to MySQL server on 'localhost'
解决方案:
- 检查 MySQL 服务是否启动: ```bash # Windows net start mysql
# macOS/Linux sudo service mysql start ```
- 检查端口是否正确(默认 3306)
访问被拒绝
错误信息: Access denied for user 'root'@'localhost'
解决方案:
- 确认用户名和密码正确
- 重置 root 密码(如忘记)
字符集问题
问题: 中文数据乱码
解决方案:
确保数据库使用 utf8mb4 字符集:
ALTER DATABASE mindra CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;