连接数据库
在创建数据库连接之后,才能使用它来执行SQL语句操作数据。
如果您使用的是开源的JDBC驱动程序,应确保数据库参数password_encryption_type取值设置为1,如果参数值不为1,可能会出现连接失败,典型的报错信息比如:“none of the server's SASL authentication mechanisms are supported”,参见以下操作:
- 将参数修改为1,修改方法参见《用户指南》的“修改数据库参数”章节。
- 新建一个数据库用户用于连接,或者重置准备使用的数据库用户的密码。
- 如果您使用的是管理员账号,参见《用户指南》的“重置密码”章节。
- 如果是普通用户,可以先通过其他客户端工具(例如Data Studio)连接数据库后,使用ALTER USER语句来修改密码。
- 再尝试连接数据库。
需要执行以上操作的原因:
- 调整参数的原因:当前MD5算法已被证实可以人工碰撞,已严禁将之用于密码校验算法。GaussDB(DWS) 采用默认安全设计,默认禁止MD5算法的密码校验,而PostgreSQL的开源libpq通信协议恰恰使用的是MD5算法。所以需要调整一下密码算法参数password_encryption_type,打开MD5算法。
- 修改密码的原因:GaussDB(DWS) 中是不会存储您的密码原文的,而是存储的密码HASH摘要(默认是SHA256摘要),在密码校验时该摘要会与客户端发来的密码摘要进行比对(中间会有加盐操作)。故当您只是单纯调整了密码算法策略时,数据库是无法还原您的密码进而再生成MD5的摘要值的,必须要求您手动修改一次密码或者创建一个新用户,这时新的密码将会采用您设置的HASH算法进行摘要存储,用于下次连接认证。
函数原型
JDBC提供了三个方法,用于创建数据库连接。
- DriverManager.getConnection(String url);
- DriverManager.getConnection(String url, Properties info);
- DriverManager.getConnection(String url, String user, String password);
参数
参数 |
描述 |
---|---|
url |
gsjdbc4.jar数据库连接描述符。格式如下:
说明:
使用gsjdbc200.jar时,将“jdbc:postgresql”修改为“jdbc:gaussdb”
|
info |
数据库连接属性。常用的属性如下:
|
user |
数据库用户。 |
password |
数据库用户的密码。 |
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
//以下用例以gsjdbc4.jar为例,如果要使用gsjdbc200.jar,请替换驱动类名(将代码中的“org.postgresql”替换成“com.huawei.gauss200.jdbc”)与连接URL串前缀(将“jdbc:postgresql”替换为“jdbc:gaussdb”)。
//以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。
public static Connection GetConnection(String username, String passwd)
{
//驱动类。
String driver = "org.postgresql.Driver";
//数据库连接描述符。
String sourceURL = "jdbc:postgresql://10.10.0.13:8000/postgres?currentSchema=test";
Connection conn = null;
try
{
//加载驱动。
Class.forName(driver);
}
catch( Exception e )
{
e.printStackTrace();
return null;
}
try
{
//创建连接。
conn = DriverManager.getConnection(sourceURL, username, passwd);
System.out.println("Connection succeed!");
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
return conn;
};
|