1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 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();
|