Todos os produtos
Search
Central de documentação

Lindorm:Use Rust para desenvolver aplicações

Última atualização: Jun 28, 2026

Conecte-se ao LindormTable a partir de uma aplicação Rust usando o protocolo de compatibilidade MySQL e o crate mysql.

Pré-requisitos

Antes de começar, verifique se você tem:

Conectar ao LindormTable

Etapa 1: Adicionar a dependência mysql

No arquivo Cargo.toml, adicione o crate mysql em [dependencies]:

[dependencies]
mysql = "*"

Definir a versão como * baixa a release mais recente.

Etapa 2: Configure parâmetros de conexão

Crie as opções de conexão com OptsBuilder:

let opts = OptsBuilder::new()
    .ip_or_hostname(Some("ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com"))
    .user(Some("user"))
    .pass(Some("test"))
    .db_name(Some("default"))
    .tcp_port(33060);

Parâmetro

Descrição

ip_or_hostname

Endpoint do LindormTable para MySQL. Consulte Visualize endpoints.

user

Nome de usuário. Para redefinir uma senha esquecida, consulte Gerencie usuários.

pass

Senha.

db_name

Nome do banco de dados. O padrão é default.

tcp_port

Valor fixo: 33060.

Escolher o tipo correto de endpoint

  • VPC (recomendado para aplicações implantadas no ECS): Use o endpoint VPC do LindormTable para MySQL. O acesso via VPC oferece maior segurança e menor latência de rede.

  • Internet (para clientes locais ou externos): Use o endpoint de Internet do LindormTable para MySQL. Para ativar o acesso pela Internet, acesse o console Lindorm, navegue até Database Connections > Wide Table Engine e clique em Enable Public Endpoint.

Etapa 3: Estabelecer uma conexão e execute SQL

Crie um pool de conexões, obtenha uma conexão e use o SQL do LindormTable para manipular seus dados:

let pool = Pool::new(opts).unwrap();
let mut conn = pool.get_conn().unwrap();

// Create a table
conn.query_drop(
    r"create table if not exists user_test(id int, name varchar, age int, primary key(id))"
).expect("Failed to create table");

Escolher o método de execução adequado

Método

Quando usar

query_drop

Instruções DDL (CREATE, DROP) ou DML quando o resultado não for necessário

exec_drop

DML com vinculação de parâmetros (upsert, update, delete)

query

Instruções SELECT que retornam linhas

Etapa 4: Compilar e execute

cargo build
cargo run

Código de exemplo

O exemplo a seguir conecta-se ao LindormTable, cria uma tabela, insere duas linhas e consulta todas as linhas.

use mysql::*;
use mysql::prelude::*;

fn main() {
    // Configure the endpoint, credentials, database, and port
    let opts = OptsBuilder::new()
        .ip_or_hostname(Some("ld-xxxx-sql-lindorm.lindorm.rds.aliyuncs.com"))
        .user(Some("root"))
        .pass(Some("root"))
        .db_name(Some("default"))
        .tcp_port(33060);

    let pool = Pool::new(opts).unwrap();
    let mut conn = pool.get_conn().unwrap();

    // Create a table
    conn.query_drop(
        r"create table if not exists user_test(id int, name varchar, age int, primary key(id))"
    ).expect("Failed to create table");

    // Insert data using upsert
    conn.exec_drop(
        r"upsert into user_test(id,name,age) values(?,?,?)",
        (1, "zhangsan", 17)
    ).expect("Failed to insert data 1");
    conn.exec_drop(
        r"upsert into user_test(id,name,age) values(?,?,?)",
        (2, "lisi", 27)
    ).expect("Failed to insert data 2");

    // Query all rows
    let result = conn.query(r"select * from user_test").expect("Failed to select");
    for row in result {
        let (id, name, age): (i32, String, i32) = from_row(row);
        println!("Id: {}, Name: {}, Age: {}", id, name, age);
    }
}

Saída esperada:

Finished dev [unoptimized + debuginfo] target(s) in 0.09s
     Running `target/debug/hello_word`
Id: 1, Name: zhangsan, Age: 17
Id: 2, Name: lisi, Age: 27

Próximos passos