版本:7.0.0-RC3

Linux下配置数据源

将ograc提供的ODBC驱动(libogodbc.so)配置到数据源中便可使用。配置数据源需要配置“odbc.ini”和“odbcinst.ini”两个文件(在编译安装unixODBC过程中生成且默认放在“/usr/local/etc”目录下),并在服务器端进行配置。

操作步骤

  1. 获取unixODBC源码包。

    要求unixODBC版本不低于2.3.6。以unixODBC-2.3.6版本为例,获取地址:http://www.unixodbc.org/unixODBC-2.3.6.tar.gz

  2. 安装unixODBC。如果机器上已经安装了低版本的unixODBC,应先卸载或直接覆盖安装。

    以unixODBC-2.3.6版本为例,在客户端执行如下命令安装unixODBC。默认安装到“/usr/local”目录下,生成数据源文件到 “/usr/local/etc”目录下,库文件生成在“/usr/local/lib”目录。

    shell
    tar zxvf unixODBC-2.3.6.tar.gz
    cd unixODBC-2.3.6
    ./configure --enable-gui=no
    make
    #安装可能需要root权限
    make install
  3. 替换客户端odbc驱动程序。

    将ograc提供的ODBC驱动libogodbc.so复制到“/usr/local/lib”目录下,查看是否完整。

    shell
    ldd /usr/local/lib/libogodbc.so
  4. 配置数据源。

    1. 配置ODBC驱动文件。

      在“/usr/local/etc/odbcinst.ini”文件中追加以下内容。

      shell
      [OgracMPP]
      Driver64=/usr/local/lib/libogodbc.so
      setup=/usr/local/lib/libogodbc.so

      odbcinst.ini文件中的配置参数说明如表1所示。

      表 1 odbcinst.ini文件配置参数

      参数

      描述

      示例

      [DriverName]

      驱动器名称,对应数据源DSN中的驱动名。

      [OgracMPP]

      Driver64

      驱动动态库的路径。

      Driver64=/usr/local/lib/libogodbc.so

      setup

      驱动安装路径,与Driver64中动态库的路径一致。

      setup=/usr/local/lib/libogodbc.so

    2. 配置数据源文件。

      在“/usr/local/etc/odbc.ini”文件中追加以下内容。

      shell
      [OgracDB]
      Driver=OgracMPP
      Servername=127.0.0.1
      Port=1611
      Username=test
      Password=test123

      odbc.ini文件配置参数说明如表2所示。

      表 2 odbc.ini文件配置参数

      参数

      描述

      示例

      [DSN]

      数据源的名称。

      [OgracDB]

      Driver

      驱动名,对应odbcinst.ini中的DriverName。

      Driver=OgracMPP

      Servername

      服务器的IP地址。

      Servername=127.0.0.1

      Username

      数据库用户名称。

      Username=test

      Password

      数据库用户密码。

      Password=test123

      说明:

      ODBC驱动本身已经对内存密码进行过清理,以保证用户密码在连接后不会再在内存中保留。

      Port

      服务器的端口号。

      Port=1611

      sslmode

      开启SSL模式

      sslmode=VERIFY_CA

      sslca

      指定为ODBC侧颁发证书的根证书文件,根证书用于验证服务器证书的有效性。

      sslca=/usr/test/certificate/ca.crt

      sslcert

      指定ODBC侧证书文件,包含客户端的公钥。

      sslcert=/usr/test/certificate/client.crt

      sslkey

      指定ODBC侧私钥文件,用以数字签名和对公钥加密的数据进行解密。

      sslkey==/usr/test/certificate/client.key

      其中关于sslmode的选项的允许值,具体信息见下表:

      表 3 sslmode的可选项及其描述

      sslmode

      是否启用SSL加密

      描述

      VERIFY_CA

      必须使用SSL安全连接,并且验证数据库是否具有可信证书机构签发的证书。

      DISABLED

      不使用SSL安全连接。

      PREFERRED

      可能

      如果数据库支持,那么建议使用SSL安全加密连接,但不验证数据库服务器的真实性。

      REQUIRED

      必须使用SSL安全连接,但是只做了数据加密,而并不验证数据库服务器的真实性。

      VERIFY_FULL

      必须使用SSL安全连接,在verify-ca的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。openGauss不支持此模式。

  5. SSL模式的用法。

    1. 生成服务器证书。

      在安装数据库的服务器上进行如下操作:

      shell
      #在主机生成CA证书ca.crt和私钥ca.key
      openssl req -newkey rsa:3072 -passout pass:12345678 -keyout ca.key -x509 -days 365 -out ca.crt -subj "/C=CN/ST=BJ/O=huawei/OU=huawei/CN=CA/emailAddress=123456@xxx.com"
      #在主机生成私钥mes.key和证书请求mes.csr
      openssl req -newkey rsa:3072 -nodes -keyout mes.key -out mes.csr -subj "/C=CN/ST=BJ/L=BJ/O=huawei/OU=huawei/CN=Server/emailAddress=123456@xxx.com"
      #在主机生成证书mes.crt
      openssl x509 -req -days 365 -in mes.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out mes.crt
    2. 服务器参数配置

      在安装数据库的服务器上创建一个目录/opt/ograc/data,将生成的证书ca.crt、ca.key、ca.srl、mes.crt、mes.csr、mes.key都放到该目录下,修改文件夹和证书的权限:

      shell
      #修改文件夹权限,其中ogracdba为数据库安装用户
      chmod 700 /opt/ograc/data
      chown ogracdba:ogracdba /opt/ograc/data
      
      #修改证书权限
      chmod 400 /opt/ograc/data/*
      chown ogracdba:ogracdba /opt/ograc/data/*
    3. 添加ssl参数,开启数据库ssl模式。

      shell
      #登录数据库
      ogsql test/test123@127.0.0.1:1611 -q
      #执行如下sql添加参数
      alter system set SSL_CA = '/opt/ograc/data/ca.crt';
      alter system set SSL_CERT = '/opt/ograc/data/mes.crt';
      alter system set SSL_KEY='/opt/ograc/data/mes.key';
      
      #重启数据库
      cms res -stop db
      cms res -start db

      重启之后执行sql命令:show parameter ssl,如果查询结果HAVE_SSL的值为TRUE,则说明SSL功能成功打开。

    4. ODBC客户端配置SSL连接。

      在ODBC所在客户端机器上任意创建一个目录/usr/test/certificate,使用scp将服务端生成的ca.crt传到ODBC所在客户端机器上,执行如下操作:

      shell
      mkdir -p /usr/test/certificate
      cd /usr/test/certificate
      scp root@xxx.xxx.xx.xx:/opt/ograc/data/ca.crt .

      在客户端上生成私钥client.key和证书请求client.csr:

      shell
      openssl req -newkey rsa:3072 -nodes -keyout client.key -out client.csr -subj "/C=CN/ST=BJ/L=BJ/O=huawei/OU=huawei/CN=Server/emailAddress=123456@xxx.com"

      使用scp将client.csr传到数据库所在的服务器上/opt/ograc/data路径下:

      shell
      scp client.csr root@xxx.xxx.xx.xx:/opt/ograc/data/
    5. 生成客户端证书。

      在数据库所在服务器的/opt/ograc/data路径下生成证书client.crt,并传到客户端机器上:

      shell
      cd /opt/ograc/data
      openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt
    6. 将证书传到客户端机器上。

      将生成的证书client.crt传到客户端机器上:

      shell
      cd /usr/test/certificate
      scp root@xxx.xxx.xx.xx:/opt/ograc/data/client.crt .
    7. 客户端ODBC参数配置

      给证书添加权限:

      shell
      chmod 400 /usr/test/certificate/*

      在文件odbc.ini中添加参数:

      shell
      sslca=/usr/test/certificate/ca.crt
      sslcert=/usr/test/certificate/client.crt
      sslkey=/usr/test/certificate/client.key
      sslmode = VERIFY_CA
  6. 在客户端配置环境变量。

    shell
    vim ~/.bashrc

    在配置文件中追加以下内容。

    shell
    export PATH=/usr/local/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

    执行如下命令使设置生效。

    shell
    source ~/.bashrc
  7. 注册驱动。

    shell
    odbcinst -i -d -f /usr/local/etc/odbcinst.ini

测试数据源配置

安装后使用isql命令进行连接验证,执行 isql OgracDB -v test test123 命令 。

  • 如果显示如下信息,表明配置正确,连接成功。

    shell
    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    SQL>
  • 若显示ERROR信息,则表明配置错误。请检查上述配置是否正确。