test-db-connection.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const mysql = require('mysql2/promise');
  2. async function testConnection() {
  3. console.log('🔍 开始数据库连接测试...');
  4. console.log('📍 目标服务器: 47.94.130.207:3306');
  5. console.log('👤 用户名: workout');
  6. console.log('🗄️ 数据库: workout');
  7. const connection = await mysql.createConnection({
  8. host: '47.94.130.207',
  9. port: 3306,
  10. user: 'workout',
  11. password: 'E2EY5JzTasTGWkf7',
  12. database: 'workout',
  13. connectTimeout: 10000, // 10秒连接超时
  14. charset: 'utf8mb4'
  15. });
  16. try {
  17. console.log('⏳ 正在尝试连接数据库...');
  18. console.log('✅ 数据库连接成功!');
  19. const [rows] = await connection.execute('SELECT 1 as test, NOW() as `current_time`');
  20. console.log('✅ 查询测试成功:', rows);
  21. // 测试数据库是否存在
  22. const [databases] = await connection.execute('SHOW DATABASES');
  23. console.log('📋 可用数据库:', databases.map(db => db.Database));
  24. await connection.end();
  25. console.log('🔚 连接已关闭');
  26. } catch (error) {
  27. console.error('❌ 数据库连接失败');
  28. console.error('错误类型:', error.constructor.name);
  29. console.error('错误消息:', error.message);
  30. console.error('错误代码:', error.code);
  31. console.error('错误号:', error.errno);
  32. console.error('SQL状态:', error.sqlState);
  33. // 根据错误代码提供建议
  34. switch(error.code) {
  35. case 'ECONNREFUSED':
  36. console.log('💡 建议: 检查服务器防火墙或MySQL服务是否运行');
  37. break;
  38. case 'ETIMEDOUT':
  39. console.log('💡 建议: 检查网络连接或云服务器安全组设置');
  40. console.log('🔧 具体检查步骤:');
  41. console.log(' 1. 登录云服务器控制台');
  42. console.log(' 2. 找到安全组设置');
  43. console.log(' 3. 确保端口 3306 对公网开放');
  44. console.log(' 4. 检查 MySQL 是否监听在 0.0.0.0:3306');
  45. break;
  46. case 'ER_ACCESS_DENIED_ERROR':
  47. console.log('💡 建议: 检查用户名和密码是否正确');
  48. break;
  49. case 'ER_BAD_DB_ERROR':
  50. console.log('💡 建议: 检查数据库名称是否正确');
  51. break;
  52. default:
  53. console.log('💡 建议: 检查网络连接和服务器配置');
  54. }
  55. }
  56. }
  57. testConnection();