const mysql = require('mysql2/promise'); async function testConnection() { console.log('🔍 开始数据库连接测试...'); console.log('📍 目标服务器: 47.94.130.207:3306'); console.log('👤 用户名: workout'); console.log('🗄️ 数据库: workout'); const connection = await mysql.createConnection({ host: '47.94.130.207', port: 3306, user: 'workout', password: 'E2EY5JzTasTGWkf7', database: 'workout', connectTimeout: 10000, // 10秒连接超时 charset: 'utf8mb4' }); try { console.log('⏳ 正在尝试连接数据库...'); console.log('✅ 数据库连接成功!'); const [rows] = await connection.execute('SELECT 1 as test, NOW() as `current_time`'); console.log('✅ 查询测试成功:', rows); // 测试数据库是否存在 const [databases] = await connection.execute('SHOW DATABASES'); console.log('📋 可用数据库:', databases.map(db => db.Database)); await connection.end(); console.log('🔚 连接已关闭'); } catch (error) { console.error('❌ 数据库连接失败'); console.error('错误类型:', error.constructor.name); console.error('错误消息:', error.message); console.error('错误代码:', error.code); console.error('错误号:', error.errno); console.error('SQL状态:', error.sqlState); // 根据错误代码提供建议 switch(error.code) { case 'ECONNREFUSED': console.log('💡 建议: 检查服务器防火墙或MySQL服务是否运行'); break; case 'ETIMEDOUT': console.log('💡 建议: 检查网络连接或云服务器安全组设置'); console.log('🔧 具体检查步骤:'); console.log(' 1. 登录云服务器控制台'); console.log(' 2. 找到安全组设置'); console.log(' 3. 确保端口 3306 对公网开放'); console.log(' 4. 检查 MySQL 是否监听在 0.0.0.0:3306'); break; case 'ER_ACCESS_DENIED_ERROR': console.log('💡 建议: 检查用户名和密码是否正确'); break; case 'ER_BAD_DB_ERROR': console.log('💡 建议: 检查数据库名称是否正确'); break; default: console.log('💡 建议: 检查网络连接和服务器配置'); } } } testConnection();