#!/usr/bin/env python3 """ 修复密码哈希格式 """ import pymysql from urllib.parse import urlparse import os from dotenv import load_dotenv import hashlib import secrets load_dotenv() def hash_password_simple(password): """简单的密码哈希""" # 生成盐值 salt = secrets.token_hex(16) # 使用SHA256哈希 password_hash = hashlib.sha256((password + salt).encode()).hexdigest() return f"sha256${salt}${password_hash}" def fix_admin_password(): """修复admin用户密码""" database_url = os.getenv('DATABASE_URL', '') parsed = urlparse(database_url) config = { 'host': parsed.hostname or 'localhost', 'port': parsed.port or 3306, 'user': parsed.username or 'root', 'password': parsed.password or '', 'database': parsed.path[1:] if parsed.path else 'sso_db', 'charset': 'utf8mb4' } try: conn = pymysql.connect(**config) cursor = conn.cursor() # 生成新的密码哈希 new_password = "Admin123456" new_hash = hash_password_simple(new_password) print(f"新密码: {new_password}") print(f"新哈希: {new_hash}") # 更新admin用户密码 cursor.execute( 'UPDATE users SET password_hash = %s WHERE username = %s', (new_hash, 'admin') ) conn.commit() # 验证更新 cursor.execute('SELECT username, password_hash FROM users WHERE username = %s', ('admin',)) result = cursor.fetchone() if result: username, password_hash = result print(f"✅ 密码已更新") print(f"用户名: {username}") print(f"新哈希: {password_hash}") cursor.close() conn.close() print("\n✅ admin用户密码修复完成") print("用户名: admin") print("密码: Admin123456") except Exception as e: print(f'❌ 修复失败: {e}') if __name__ == "__main__": fix_admin_password()