
# Windows下配置数据源
Windows操作系统自带ODBC数据源管理器，无需用户手动安装管理器便可直接进行配置。
#### 操作步骤
1. 替换客户端GaussDB驱动程序。 
   将GaussDB-Kernel_VxxxRxxxCxx-Windows-Odbc.tar.gz解压后，根据需要，单击psqlodbc.exe（32位）进行驱动安装。
   
   
2. 打开驱动管理器。 
   在配置数据源时，请使用**32** 位的ODBC驱动管理器（目前仅支持**32**位的ODBC驱动管理器，假设操作系统安装盘符为C盘，如果是其他盘符，请对路径做相应修改）：
   - **64** 位操作系统请使用：C:\\Windows\\**SysWOW64** \\odbcad32.exe，请勿直接使用"控制面板 \> 管理工具 \> 数据源(ODBC)"。
     ![](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
     WOW64的全称是"Windows 32-bit on Windows 64-bit"，C:\\Windows\\SysWOW64\\存放的是64位系统上的32位运行环境。而C:\\Windows\\System32\\存放的是与操作系统一致的运行环境，具体的技术信息请查阅Windows的相关技术文档。
     
   
   - **32**位操作系统请使用：C:\\Windows\\System32\\odbcad32.exe，或者单击"计算机 \> 控制面板 \> 管理工具 \> 数据源(ODBC)"打开驱动管理器。
   
   
   
   
3. 配置数据源。
   
   在打开的驱动管理器上，选择"用户DSN \> 添加 \> PostgreSQL Unicode"，然后进行配置：
   ![](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/figure/zh-cn_image_0000002185458838.png)
   ![](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
   此界面上配置的用户名及密码信息，将会被记录在Windows注册表中，再次连接数据库时就不再需要输入认证信息。但是出于安全考虑，建议在单击"Save"按钮保存配置信息前，清空相关敏感信息；在使用ODBC的连接API时，再传入所需的用户名、密码信息。
   
   
4. SSL模式。 
   将[3]中的设置窗口的"SSL Mode"选项调整至"require"。
    表1sslmode的可选项及其描述 
   | sslmode     | 是否会启用SSL加密 | 描述                                                                                |
   |:---|:---|:---|
   | disable     | 否          | 不使用SSL安全连接。                                                                       |
   | allow       | 可能         | 如果数据库服务器要求使用，则可以使用SSL安全加密连接，但不验证数据库服务器的真实性。                                       |
   | prefer      | 可能         | 如果数据库支持，那么首选使用SSL安全加密连接，但不验证数据库服务器的真实性。                                           |
   | require     | 是          | 必须使用SSL安全连接，但是只做了数据加密，而并不验证数据库服务器的真实性。                                            |
   | verify-ca   | 是          | 必须使用SSL安全连接，并且验证数据库是否具有可信证书机构签发的证书。当前windows ODBC不支持cert方式认证。                     |
   | verify-full | 是          | 必须使用SSL安全连接，在verify-ca的验证范围之外，同时验证数据库所在主机的主机名是否与证书内容一致。当前windows odbc不支持cert方式认证。 |
      
   
   
5. 配置GaussDB服务器。具体操作请联系管理员处理。
6. 执行如下命令重启集群。 
   ```
   gs_om -t stop
   gs_om -t start
   ```
   
   
 
#### 测试数据源配置
单击Test进行测试。
- 如果显示如下，则表明配置正确，连接成功。 ![](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/figure/zh-cn_image_0000002185618490.jpg)
  
- 若显示ERROR信息，则表明配置错误。请检查上述配置是否正确。
![](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 目前通过ODBC连接数据库时，会设置以下内核参数：
  ```
  SET extra_float_digits = 2;
  SET DateStyle = 'ISO';
  ```
  这些参数可能会导致ODBC客户端的行为与gsql客户端的行为不一致，例如，Date数据显示方式、浮点数精度表示。如果实际期望和这些配置不符，建议在ODBC应用代码中显式设定这些参数。
  
 
#### 常见问题处理
- connect to server failed: no such file or directory 此问题可能的原因：
  - 配置了错误的/不可达的数据库地址，或者端口 请检查数据源配置中的Server及Port配置项。
    
  
  - 服务器侦听不正确 如果确认Server及Port配置正确，请根据"操作步骤"中数据库服务器的相关配置，确保数据库侦听了合适的网卡及端口。
    
  
  - 防火墙及网闸设备 请确认防火墙设置，将数据库的通信端口添加到可信端口中。
    如果有网闸设备，请确认相关的设置。
    
   
- The password-stored method is not supported. 此问题可能原因：
  数据源中未配置sslmode配置项，请调整此项至allow或以上级别，允许SSL连接，此选项的更多说明，请见[表1]。
  
- authentication method 10 not supported. 使用开源客户端碰到此问题，可能原因：
  数据库中存储的口令校验只存储了SHA256格式哈希，而开源客户端只识别MD5校验，双方校验方法不匹配报错。
  ![](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
  - 数据库并不存储用户口令，只存储用户口令的哈希码。
  
  - 数据库当用户更新用户口令或者新建用户时，会同时存储两种格式的哈希码，这时将兼容开源的认证协议。
  
  - 但是当老版本升级到新版本时，由于哈希的不可逆性，所以数据库无法还原用户口令，进而生成新格式的哈希，所以仍然只保留了SHA256格式的哈希，导致仍然无法使用MD5做口令认证。
  
  - MD5加密算法安全性低，存在安全风险，建议使用更安全的加密算法。
   
  要解决该问题，可以更新用户口令（参见[ALTER USER](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/gaussdb-12-0343.html#ZH-CN_TOPIC_0000002187528376)）；或者新建一个用户（参见[CREATE USER](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/gaussdb-12-0384.html#ZH-CN_TOPIC_0000002222774445)），赋予同等权限，使用新用户连接数据库。
  
- unsupported frontend protocol 3.51: server supports 1.0 to 3.0 目标数据库版本过低，或者目标数据库为开源数据库。请使用对应版本的数据库驱动连接目标数据库。
  
- FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. 目标CN的pg_hba.conf里配置了当前客户端IP使用"gss"方式来做认证，该认证算法不支持用作客户端的身份认证，请修改到"sha256"后再试。配置方法见[5]。
  
 
