跳到主要内容
版本:v2

LeanDB MySQL 指南

LeanDB 是 LeanCloud 推出的数据库托管方案,开发者可以在「控制台 => 云引擎 => LeanDB」中创建托管在 LeanCloud 的数据库实例。

开发者可以在云引擎中连接到自己的 LeanDB 实例,使用通用的 MySQL 客户端类库,访问完整的 MySQL 功能。

实例规格

  • LeanDB MySQL 提供 MySQL 5.6 版本。
  • LeanDB MySQL 的规格分为 0.5G1G2G4G 几种,代表不同的运算能力。
  • 每个实例默认有 20G 的存储空间,如果不够的话还可以选配 100G 或者 500G 的存储空间。
  • 具体的价格可以在控制台上点击「创建 LeanDB 实例」来查看。

在线管理

为方便开发和调试,我们为开发者提供了一个 Web 界面来对 MySQL 进行管理,你可以在控制台上点击「管理员面板」链接来访问这个 Web 界面。

开发者可以在这个页面上进行 SQL 查询和更新,创建和管理数据库,创建和管理索引等操作。

在云引擎中使用

LeanDB 所在的应用的云引擎在部署时,会被注入几个包含 MySQL 连接信息的环境变量,包括:

  • MYSQL_HOST_<NAME>
  • MYSQL_PORT_<NAME>
  • MYSQL_ADMIN_USER_<NAME>
  • MYSQL_ADMIN_PASSWORD_<NAME>

其中 <NAME> 是你在创建 LeanDB 时为它指定的名字,如果你的 LeanDB 名为 MYRDB 的话,就会有名为 MYSQL_HOST_MYRDB 的环境变量(以及其他三个)。

Node.js

在 Node.js 中你可以这样连接到 MySQL:

const mysql = require('mysql')
const Promise = require('bluebird')

const mysqlPool = Promise.promisifyAll(mysql.createPool({
host: process.env['MYSQL_HOST_MYRDB'],
port: process.env['MYSQL_PORT_MYRDB'],
user: process.env['MYSQL_ADMIN_USER_MYRDB'],
password: process.env['MYSQL_ADMIN_PASSWORD_MYRDB'],
database: 'test',
connectionLimit: 10
}))

mysqlPool.queryAsync('SELECT 1 + 1 AS solution').then( rows => {
console.log('The solution is', rows[0].solution)
}).catch( err => {
console.error(err)
})
  • 你需要运行 npm install --save mysql bluebird 来安装上面代码中用到的依赖
  • 更多的用法请参考 mysqljs/mysql 的文档

PHP

在 PHP 中你可以这样连接到 MySQL:

try {
$mysqlHost = getenv('MYSQL_HOST_MYRDB');
$mysqlPort = getenv('MYSQL_PORT_MYRDB');
$pdo = new PDO("mysql:host=$mysqlHost:$mysqlPort;dbname=test", getenv('MYSQL_ADMIN_USER_MYRDB'), getenv('MYSQL_ADMIN_PASSWORD_MYRDB'));

foreach($pdo->query('SELECT 1 + 1 AS solution') as $row) {
print "The solution is {$row['solution']}";
}
} catch (PDOException $e) {
print $e->getMessage();
}

Java

在 Java 中你可以这样连接到 MySQL:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;

String host = System.getenv("MYSQL_HOST_MYRDB");
String port = System.getenv("MYSQL_PORT_MYRDB");
String user = System.getenv("MYSQL_ADMIN_USER_MYRDB");
String password = System.getenv("MYSQL_ADMIN_PASSWORD_MYRDB");
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception ex) {
// 处理异常
}
try {
Connection connection = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/test?" +
"user=" + user + "&password=" + password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT 1 + 1 AS solution");
resultSet.first();
System.out.format("The solution is %d", resultSet.getInt("solution"));
} catch (SQLException ex) {
// 处理异常
}
  • 需要在 pom.xml 中加入 mysql connector 依赖:

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
    </dependency>
  • 更多的用法请参考 MySQL Connector/J 文档

Python

在 Python 中你可以这样连接到 MySQL:

import os
import mysql.connector

result = ''

host = os.environ['MYSQL_HOST_MYRDB']
port = os.environ['MYSQL_PORT_MYRDB']
user = os.environ['MYSQL_ADMIN_USER_MYRDB']
password = os.environ['MYSQL_ADMIN_PASSWORD_MYRDB']
try:
cnx = mysql.connector.connect(
user=user, password=password, database='test', host=host, port=port)
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("username or password error")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
else:
cursor = cnx.cursor()
cursor.execute('SELECT 1 + 1 AS solution')
for row in cursor:
result = "The solution is {}".format(row[0])

cursor.close()
cnx.close()
  • 上面用的是 MySQL 官方的 python driver,你需要在 requirements.txt 中列出这一依赖,例如:mysql-connector-python>=8.0.16,<9.0.0
  • 更多的用法请参考 MySQL Connector/Python 文档

常见问题

  • 目前 LeanDB 只支持从云引擎(和控制台的 Web 界面)中访问,在本地调试时无法访问。
  • 目前 LeanDB 不提供自助扩容的能力,如需扩容请联系我们的技术支持。
  • 如账户欠费超过 3 天,LeanDB 及其中的数据会被彻底删除。
  • LeanDB 每天扣费,不足一天按照一天扣费。