直连服务
MySQL 数据库提供连接字符串方式,支持外部服务直接连接云开发的 MySQL 数据库,满足开发者在各类场景下的数据访问需求。
通过开启直连服务,您可以获得数据库的连接地址,在云托管环境或本地开发环境中直接连接 MySQL 数据库进行数据操作。直连服务提供以下两种连接方式:
- 内网地址:仅在云托管环境中可访问,提供高速稳定的数据库连接
- 外网地址:可在任意网络环境访问,适用于本地开发和调试场景
⚠️ 注意:外网连接地址仅用于开发调试,生产环境的业务访问请使用内网连接,以保障性能和安全性。
开启直连服务
操作步骤

在「直连服务」模块,点击「开启」按钮启用直连功能
开启后,系统会自动生成内网地址和外网地址
连接信息说明
| 连接类型 | 访问范围 | 使用场景 | 说明 |
|---|---|---|---|
| 内网地址 | 仅云托管环境 | 生产环境业务访问 | 提供高性能、低延迟的数据库连接 |
| 外网地址 | 任意网络环境 | 本地开发、远程调试 | 便于开发调试,可选择关闭 |
使用连接字符串
获取连接地址后,您可以在应用代码中使用标准的 MySQL 连接字符串格式进行连接:
mysql://<username>:<password>@<host>:<port>/<database>
参数说明
| 参数 | 说明 |
|---|---|
username | 数据库用户名(需在「账号管理」模块创建) |
password | 数据库密码 |
host | 数据库连接地址(内网地址或外网地址) |
port | 数据库端口 |
database | 数据库名称 |
💡 提示:如果您还没有创建数据库账号,请先前往「账号管理」模块创建账号密码
代码示例
- Node.js
- Python
- Java
- PHP
- Go
const mysql = require('mysql2/promise');
// 使用内网地址连接(推荐用于生产环境)
const connection = await mysql.createConnection({
host: 'your-internal-host.mysql.tencentcdb.com',
port: 3306,
user: 'your-username',
password: 'your-password',
database: 'your-database'
});
// 执行查询
const [rows] = await connection.execute('SELECT * FROM users WHERE id = ?', [1]);
console.log(rows);
// 关闭连接
await connection.end();
import pymysql
# 使用内网地址连接(推荐用于生产环境)
connection = pymysql.connect(
host='your-internal-host.mysql.tencentcdb.com',
port=3306,
user='your-username',
password='your-password',
database='your-database',
charset='utf8mb4'
)
try:
with connection.cursor() as cursor:
# 执行查询
cursor.execute('SELECT * FROM users WHERE id = %s', (1,))
result = cursor.fetchone()
print(result)
finally:
connection.close()
import java.sql.*;
public class DatabaseConnection {
public static void main(String[] args) {
// 使用内网地址连接(推荐用于生产环境)
String url = "jdbc:mysql://your-internal-host.mysql.tencentcdb.com:3306/your-database";
String username = "your-username";
String password = "your-password";
try (Connection conn = DriverManager.getConnection(url, username, password)) {
String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
<?php
// 使用内网地址连接(推荐用于生产环境)
$host = 'your-internal-host.mysql.tencentcdb.com';
$port = 3306;
$dbname = 'your-database';
$username = 'your-username';
$password = 'your-password';
try {
$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=utf8mb4";
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 执行查询
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([1]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($result);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// 使用内网地址连接(推荐用于生产环境)
dsn := "your-username:your-password@tcp(your-internal-host.mysql.tencentcdb.com:3306)/your-database"
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 执行查询
var name string
err = db.QueryRow("SELECT name FROM users WHERE id = ?", 1).Scan(&name)
if err != nil {
log.Fatal(err)
}
fmt.Println(name)
}