支持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的依赖:
Plain Text
1<dependency>
2 <groupId>mysql</groupId>
3 <artifactId>mysql-connector-java</artifactId>
4 <version>5.1.26</version>
5</dependency>
- 使用Connector/J查询TSDB数据库实例中数据的示例代码:
Plain Text
1import java.sql.Connection;
2import java.sql.DriverManager;
3import java.sql.ResultSet;
4import java.sql.Statement;
5
6public class MySQLDemo {
7
8 // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
9 private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
10 private static final String DB_URL = "jdbc:mysql://10.70.**.**:8312/tsdbtest2";
11
12 // 数据库的用户名与密码,需要根据自己的设置
13 private static final String USER = "te******";
14 private static final String PASS = "TE******";
15
16 public static void main(String[] args) {
17 try {
18 // 注册 JDBC 驱动
19 Class.forName(JDBC_DRIVER);
20 String sql = "SELECT * FROM pm25 limit 1";
21 try (
22 // 打开链接
23 Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);
24 // 实例化Statement对象
25 Statement stmt = conn.createStatement();
26 // 执行查询
27 ResultSet rs = stmt.executeQuery(sql);
28 ) {
29 // 展开结果集数据库
30 while(rs.next()){
31 // 通过字段检索
32 long timestamp = rs.getLong("timestamp");
33 double value = rs.getDouble("value");
34 double latitude = rs.getDouble("latitude");
35 double longitude = rs.getDouble("longitude");
36 String city = rs.getString("city");
37 String zipCode = rs.getString("zip_code");
38
39 // 输出数据
40 System.out.println("输出结果:");
41 System.out.println("timestamp : " + timestamp);
42 System.out.println("value : " + value);
43 System.out.println("latitude : " + latitude);
44 System.out.println("longitude : " + longitude);
45 System.out.println("city : " + city);
46 System.out.println("zipCode : " + zipCode);
47 }
48 }
49 } catch (Exception e) {
50 // 处理异常
51 e.printStackTrace();
52 }
53 }
54}
- 示例代码返回的查询结果:
Plain Text
1timestamp : 1420000000000
2value : 60.0
3latitude : 31.48877
4longitude : 121.940402
5city : 上海
6zipCode : 200000
Grafana
示例采用Grafana 7.1.5版本连接TSDB。
- 首先添加TSDB数据源。在添加数据源窗口种选择添加“Mysql”类型的数据源,并按照下图的指示完成数据库地址、数据库名以及账号密码信息的配置。当连接测试成功后,就可以像通过Grafana操作Mysql一样操作TSDB。
- 添加可视化面板,选择创建的TSDB数据源,输入数据的SQL查询语句后即可显示图表。下图以TSDB中数据为示范数据为例,展示SQL查询语句及对应的显示效果。
TSDB支持SQL的相关内容请参考文档。