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:
O recurso de compatibilidade MySQL ativado na sua instância Lindorm. Consulte Ative o recurso de compatibilidade MySQL.
O endereço IP do seu cliente adicionado à lista de permissões da instância. Consulte Configure listas de permissões.
Rust instalado na sua máquina. Consulte Instale Rust.
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 |
|
|
Endpoint do LindormTable para MySQL. Consulte Visualize endpoints. |
|
|
Nome de usuário. Para redefinir uma senha esquecida, consulte Gerencie usuários. |
|
|
Senha. |
|
|
Nome do banco de dados. O padrão é |
|
|
Valor fixo: |
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 |
|
|
Instruções DDL ( |
|
|
DML com vinculação de parâmetros ( |
|
|
Instruções |
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
Visualize endpoints — Obtenha seu endpoint VPC ou de Internet.
Gerencie usuários — Gerencie nomes de usuário e senhas do LindormTable.
Configure listas de permissões — Controle quais endereços IP podem se conectar à sua instância.