Conéctese a LindormTable desde una aplicación en Rust mediante el protocolo de compatibilidad con MySQL y el crate mysql.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
La función de compatibilidad con MySQL habilitada en su instancia de Lindorm. Consulte Enable the MySQL compatibility feature.
La dirección IP de su cliente agregada a la lista de permitidos de la instancia. Consulte Configure whitelists.
Rust instalado en su computadora. Consulte Install Rust.
Conexión a LindormTable
Paso 1: Agregar la dependencia mysql
En su archivo Cargo.toml, agregue el crate mysql bajo la sección [dependencies]:
[dependencies]
mysql = "*"
Al establecer la versión como *, se obtiene la versión más reciente.
Paso 2: Configurar los parámetros de conexión
Construya las opciones de conexión mediante 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 |
Descripción |
|
|
Endpoint de LindormTable para MySQL. Consulte View endpoints. |
|
|
Nombre de usuario. Para restablecer una contraseña olvidada, consulte Manage users. |
|
|
Contraseña. |
|
|
Nombre de la base de datos. El valor predeterminado es |
|
|
Valor fijo: |
Elección del tipo de endpoint adecuado
VPC (recomendado para aplicaciones desplegadas en ECS): Use el endpoint VPC de LindormTable para MySQL. El acceso por VPC ofrece mayor seguridad y menor latencia de red.
Internet (para clientes locales o externos): Use el endpoint de Internet de LindormTable para MySQL. Para habilitar el acceso por Internet, vaya a la consola de Lindorm, diríjase a Database Connections > Wide Table Engine y haga clic en Enable Public Endpoint.
Paso 3: Establecer la conexión y ejecutar SQL
Cree un pool de conexiones y obtenga una conexión; después, use el lenguaje SQL de LindormTable para operar sobre sus datos:
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");
Selección del método de ejecución adecuado
|
Método |
Cuándo usarlo |
|
|
Sentencias DDL ( |
|
|
DML con enlace de parámetros ( |
|
|
Sentencias |
Paso 4: Compilar y ejecutar
cargo build
cargo run
Código de ejemplo
A continuación se muestra un ejemplo que se conecta a LindormTable, crea una tabla, inserta dos filas y consulta todas las filas.
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);
}
}
Salida 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
Pasos siguientes
View endpoints — Obtenga su endpoint VPC o de Internet.
Manage users — Gestione los nombres de usuario y contraseñas de LindormTable.
Configure whitelists — Controle qué direcciones IP pueden conectarse a su instancia.