/** * 创建默认管理员账号 * 在数据库和表已经创建后运行此脚本 */ require('dotenv').config(); const mysql = require('mysql2/promise'); const bcrypt = require('bcryptjs'); // 数据库配置 const dbConfig = { host: process.env.DB_HOST, port: process.env.DB_PORT, user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_DATABASE || 'ddcz_platform' }; async function createAdminUser() { let connection; try { console.log('🔌 正在连接到MySQL数据库...'); console.log(` 数据库: ${dbConfig.database}`); connection = await mysql.createConnection(dbConfig); console.log('✅ 数据库连接成功!\n'); // 生成管理员密码哈希 console.log('🔐 正在生成管理员密码...'); const defaultPassword = 'admin123456'; const passwordHash = await bcrypt.hash(defaultPassword, 10); console.log('✅ 密码哈希生成成功!\n'); // 插入或更新管理员账号 console.log('👤 正在创建管理员账号...'); const [result] = await connection.query(` INSERT INTO users (username, password_hash, email, role, status) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE password_hash = VALUES(password_hash), email = VALUES(email), updated_at = CURRENT_TIMESTAMP `, ['admin', passwordHash, 'admin@ddcz.com', 'admin', 'active']); if (result.affectedRows > 0) { console.log('✅ 管理员账号创建/更新成功!\n'); console.log('📝 管理员登录信息:'); console.log(' 用户名: admin'); console.log(' 密码: admin123456'); console.log(' ⚠️ 请在首次登录后立即修改密码!\n'); } // 验证表是否存在 console.log('📊 验证数据库表...'); const [tables] = await connection.query('SHOW TABLES'); console.log(`✅ 数据库中共有 ${tables.length} 个表:`); tables.forEach(table => { const tableName = Object.values(table)[0]; console.log(` - ${tableName}`); }); console.log('\n🎉 管理员账号设置完成!'); } catch (error) { console.error('\n❌ 操作失败:'); console.error(error.message); if (error.code === 'ECONNREFUSED') { console.error('\n💡 无法连接到MySQL服务器'); } else if (error.code === 'ER_ACCESS_DENIED_ERROR') { console.error('\n💡 用户名或密码错误'); } else if (error.code === 'ER_NO_SUCH_TABLE') { console.error('\n💡 表不存在,请先在Navicat中执行 database-setup.sql'); } process.exit(1); } finally { if (connection) { await connection.end(); console.log('🔌 数据库连接已关闭'); } } } // 执行 createAdminUser();