const mysql = require('mysql2'); // 数据库配置 const dbConfig = { host: '129.211.213.226', port: 9527, user: 'root', password: 'aiotAiot123!', database: 'jiebandata' }; // 创建连接 const connection = mysql.createConnection(dbConfig); // 连接数据库 connection.connect((err) => { if (err) { console.error('数据库连接失败: ' + err.stack); return; } console.log('数据库连接成功,连接ID: ' + connection.threadId); // 创建管理员表 const createAdminTableSQL = ` CREATE TABLE IF NOT EXISTS admins ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, email VARCHAR(100) UNIQUE, nickname VARCHAR(100), avatar VARCHAR(255), role ENUM('super_admin', 'admin', 'operator') DEFAULT 'admin', status TINYINT DEFAULT 1, last_login TIMESTAMP NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_username (username), INDEX idx_email (email), INDEX idx_role (role) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; `; connection.query(createAdminTableSQL, (error, results) => { if (error) { console.error('创建管理员表失败: ' + error.stack); connection.end(); return; } console.log('✅ 管理员表创建成功'); // 检查是否已存在测试数据 connection.query('SELECT COUNT(*) as count FROM admins', (error, results) => { if (error) { console.error('查询管理员表数据量失败: ' + error.stack); connection.end(); return; } if (results[0].count > 0) { console.log('✅ 管理员表中已有数据,跳过插入测试数据'); connection.end(); return; } // 插入测试数据 const insertTestDataSQL = ` INSERT INTO admins (username, password, email, nickname, role) VALUES ('admin', '$2b$10$rVuz/q97ocR1Zb07DzW5F.9Qx6B6HnV7JFzQb5nR1W3v7Z2mH4n6O', 'admin@example.com', '超级管理员', 'super_admin'), ('operator', '$2b$10$rVuz/q97ocR1Zb07DzW5F.9Qx6B6HnV7JFzQb5nR1W3v7Z2mH4n6O', 'operator@example.com', '操作员', 'operator'); `; connection.query(insertTestDataSQL, (error, results) => { if (error) { console.error('插入测试数据失败: ' + error.stack); connection.end(); return; } console.log('✅ 测试数据插入成功,插入 ' + results.affectedRows + ' 条记录'); connection.end(); }); }); }); });