支持MySQL协议
更新时间:2023-03-21
介绍
TSDB现已正式支持Mysql协议,可为用户提供更加便捷的SQL使用体验。用户可通过控制台创建Mysql协议账号后,利用Mysql JDBC、以及支持Mysql JDBC的各类工具查询访问TSDB数据。
Mysql账号管理
创建账号
使用Mysql协议连接TSDB数据库实例时需要提供Mysql协议账号信息(包括用户名、密码),用户可通过TSDB控制台创建Mysql协议账号。
使用限制:
- 仅允许主用户进行mysql账号管理相关操作
- 子用户不能看到主用户创建的mysql账号
- 每个主用户最多创建10个mysql协议账号
- 登录TSDB控制台,点击「账户管理」后显示已创建的账户列表信息
- 点击「创建账号」,在弹出的编辑窗口中,「账号名称」、「账号密码」、「确认密码」分别填写用户自定义的Mysql用户名及密码,「授权信息」选择希望通过该账号访问到的TSDB实例名称。
账号名称:8-16个字符,由字母和数字组成,创建后不可修改
账号密码:8-16个字符,必须包含大小写字母和数据三种字符
授权信息:支持选择多个TSDB实例进行关联
- 创建后的账号显示在账户列表中。账号关联的TSDB数据库实例可通过点击「授权信息」>「查看」获得。
编辑账号
已创建的Mysql账号支持授权信息的修改、账号密码重置。
授权信息编辑
点击「账户列表」>「操作」>「编辑」进入编辑账号页面,可对授权信息进行添加和删除,调整完成后需保证输入的账号密码正确,点击确定后将保存本次调整内容。
账号密码重置
点击「账户列表」>「操作」>「重置密码」进入密码编辑弹窗,按照要求输入新密码,点击确定后需要通过发送手机验证码进行二次确认,确认手机号无误后点击「发送验证码」,将接收到的验证码正确输入,点击确定,完成账号密码的重置。
连接示例
账号信息生成后,用户可利用Mysql Shell、Mysql JDBC、以及各种兼容Mysql协议的BI工具访问TSDB,连接Host信息填写TSDB实例的EndPoint地址+端口号3306(示例见:Grafana连接TSDB);通过Mysql协议支持的查询函数请参考SQL查询函数。
MySQL Shell
示例采用MySQL Shell 5.0版本连接TSDB,如下图:
MySQL Connector/J
示例采用MySQL Connector/J 5.1.26版本连接TSDB。
- 在Maven的pom.xml文件中添加mysql-connector-java 5.1.26的依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
- 使用Connector/J查询TSDB数据库实例中数据的示例代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class MySQLDemo {
// MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://10.70.**.**:8312/tsdbtest2";
// 数据库的用户名与密码,需要根据自己的设置
private static final String USER = "te******";
private static final String PASS = "TE******";
public static void main(String[] args) {
try {
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
String sql = "SELECT * FROM pm25 limit 1";
try (
// 打开链接
Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);
// 实例化Statement对象
Statement stmt = conn.createStatement();
// 执行查询
ResultSet rs = stmt.executeQuery(sql);
) {
// 展开结果集数据库
while(rs.next()){
// 通过字段检索
long timestamp = rs.getLong("timestamp");
double value = rs.getDouble("value");
double latitude = rs.getDouble("latitude");
double longitude = rs.getDouble("longitude");
String city = rs.getString("city");
String zipCode = rs.getString("zip_code");
// 输出数据
System.out.println("输出结果:");
System.out.println("timestamp : " + timestamp);
System.out.println("value : " + value);
System.out.println("latitude : " + latitude);
System.out.println("longitude : " + longitude);
System.out.println("city : " + city);
System.out.println("zipCode : " + zipCode);
}
}
} catch (Exception e) {
// 处理异常
e.printStackTrace();
}
}
}
- 示例代码返回的查询结果:
timestamp : 1420000000000
value : 60.0
latitude : 31.48877
longitude : 121.940402
city : 上海
zipCode : 200000
Grafana
示例采用Grafana 7.1.5版本连接TSDB。
- 首先添加TSDB数据源。在添加数据源窗口种选择添加“Mysql”类型的数据源,并按照下图的指示完成数据库地址、数据库名以及账号密码信息的配置。当连接测试成功后,就可以像通过Grafana操作Mysql一样操作TSDB。
- 添加可视化面板,选择创建的TSDB数据源,输入数据的SQL查询语句后即可显示图表。下图以TSDB中数据为示范数据为例,展示SQL查询语句及对应的显示效果。
TSDB支持SQL的相关内容请参考文档。