云服务器内容精选

  • 其他故障 出现因“总线错误”(Bus error)导致的core dump或异常退出 一般情况下出现此种问题,是进程运行过程中加载的共享动态库(在Linux为.so文件)出现变化;或者进程二进制文件本身出现变化,导致操作系统加载机器的执行码或者加载依赖库的入口发生变化,操作系统出于保护目的将进程终止,产生core dump文件。 解决此问题,重试便可。同时请尽可能避免在升级等运维操作过程中,在集群内部运行业务程序,避免升级时因替换文件产生此问题。 此故障的core dump文件的可能堆栈是dl_main及其子调用,它是操作系统用来初始化进程做共享动态库加载的。如果进程已经初始化,但是共享动态库还未加载完成,严格意义上来说,进程并未完全启动。
  • 创建连接故障 gsql: could not connect to server: No route to host 此问题一般是指定了不可达的地址或者端口导致的。请检查-h参数与-p参数是否添加正确。 gsql: FATAL: Invalid username/password,login denied. 此问题一般是输入了错误的用户名和密码导致的,请联系数据库管理员,确认用户名和密码的正确性。 The "libpq.so" loaded mismatch the version of gsql, please check it. 此问题是由于环境中使用的libpq.so的版本与gsql的版本不匹配导致的,请通过“ldd gsql”命令确认当前加载的libpq.so的版本,并通过修改LD_LIBRARY_PATH环境变量来加载正确的libpq.so。 gsql: symbol lookup error: xxx/gsql: undefined symbol: libpqVersionString 此问题是由于环境中使用的libpq.so的版本与gsql的版本不匹配导致的(也有可能是环境中存在PostgreSQL的libpq.so),请通过“ldd gsql”命令确认当前加载的libpq.so的版本,并通过修改LD_LIBRARY_PATH环境变量来加载正确的libpq.so。 gsql: connect to server failed: Connection timed out Is the server running on host "xx.xxx.xxx.xxx" and accepting TCP/IP connections on port xxxx? 此问题是由于网络连接故障造成。请检查客户端与数据库服务器间的网络连接。如果发现从客户端无法PING到数据库服务器端,则说明网络连接出现故障。请联系网络管理人员排查解决。 ping -c 4 10.10.10.1 PING 10.10.10.1 (10.10.10.1) 56(84) bytes of data. From 10.10.10.1: icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=2 Destination Host Unreachable From 10.10.10.1 icmp_seq=3 Destination Host Unreachable From 10.10.10.1 icmp_seq=4 Destination Host Unreachable --- 10.10.10.1 ping statistics --- 4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2999ms gsql: FATAL: permission denied for database "postgres" DETAIL: User does not have CONNECT privilege. 此问题是由于用户不具备访问该数据库的权限,可以使用如下方法解决。 使用管理员用户dbadmin连接数据库。 gsql -d postgres -U dbadmin -p 8000 赋予该用户访问数据库的权限。 GRANT CONNECT ON DATABASE postgres TO user1; 实际上,常见的许多错误操作也可能产生用户无法连接上数据库的现象。如用户连接的数据库不存在,用户名或密码输入错误等。这些错误操作在客户端工具也有相应的提示信息。 gsql -d postgres -p 8000 gsql: FATAL: database "postgres" does not exist gsql -d postgres -U user1 -W gauss@789 -p 8000 gsql: FATAL: Invalid username/password,login denied. gsql: FATAL: sorry, too many clients already,active/non-active: 197/3. 此问题是由于系统连接数量超过了最大连接数量。请联系数据库DBA进行会话连接数管理,释放无用会话。 关于查看用户会话连接数的方法如表1。 会话状态可以在视图PG_STAT_ACTIVITY中查看。无用会话可以使用函数pg_terminate_backend进行释放。 select datid,pid,state from pg_stat_activity; datid | pid | state -------+-----------------+-------- 13205 | 139834762094352 | active 13205 | 139834759993104 | idle (2 rows) 其中pid的值即为该会话的线程ID。根据线程ID结束会话。 SELECT PG_TERMINATE_BACKEND(139834759993104); 显示类似如下信息,表示结束会话成功。 PG_TERMINATE_BACKEND ---------------------- t (1 row) 表1 查看会话连接数 描述 命令 查看指定用户的会话连接数上限。 执行如下命令查看连接到指定用户USER1的会话连接数上限。其中-1表示没有对用户user1设置连接数的限制。 SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='user1'; rolname | rolconnlimit ---------+-------------- user1 | -1 (1 row) 查看指定用户已使用的会话连接数。 执行如下命令查看指定用户USER1已使用的会话连接数。其中,1表示USER1已使用的会话连接数。 SELECT COUNT(*) FROM V$SESSION WHERE USERNAME='user1'; count ------- 1 (1 row) 查看指定数据库的会话连接数上限。 执行如下命令查看连接到指定数据库postgres的会话连接数上限。其中-1表示没有对数据库postgres设置连接数的限制。 SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='postgres'; datname | datconnlimit ----------+-------------- postgres | -1 (1 row) 查看指定数据库已使用的会话连接数。 执行如下命令查看指定数据库postgres上已使用的会话连接数。其中,1表示数据库postgres上已使用的会话连接数。 SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='postgres'; count ------- 1 (1 row) 查看所有用户已使用会话连接数。 执行如下命令查看所有用户已使用的会话连接数。 SELECT COUNT(*) FROM V$SESSION; count ------- 10 (1 row) gsql: wait xxx.xxx.xxx.xxx:xxxx timeout expired gsql在向数据库发起连接的时候,会有5分钟超时机制,如果在这个超时时间内,数据库未能正常的对客户端请求进行校验和身份认证,那么gsql会退出当前会话的连接过程,并报出如上错误。 一般来说,此问题是由于连接时使用的-h参数及-p参数指定的连接主机及端口有误(即错误信息中的xxx部分),导致通信故障;极少数情况是网络故障导致。要排除此问题,请检查数据库的主机名及端口是否正确。 gsql: could not receive data from server: Connection reset by peer. 同时,检查CN日志中出现类似如下日志“ FATAL: cipher file "/data/coordinator/server.key.cipher" has group or world access”,一般是由于数据目录或部分关键文件的权限被误操作篡改导致。请参照其他正常实例下的相关文件权限,修改回来便可。 gsql: FATAL: GSS authentication method is not allowed because XXXX user password is not disabled. 目标CN的pg_hba.conf里配置了当前客户端IP使用"gss"方式来做认证,该认证算法不支持用作客户端的身份认证,请修改到"sha256"后再试。 请不要修改pg_hba.conf中数据库集群主机的相关设置,否则可能导致数据库功能故障。 建议业务应用部署在数据库集群之外,而非集群内部。
  • 连接性能问题 数据库内核执行初始化语句较慢导致的性能问题。 此种情况定位较难,可以尝试使用Linux的跟踪命令:strace。 strace gsql -U MyUserName -W {password} -d postgres -h 127.0.0.1 -p 23508 -r -c '\q' 此时便会在屏幕上打印出数据库的连接过程。比如较长时间停留在下面的操作上: sendto(3, "Q\0\0\0\25SELECT VERSION()\0", 22, MSG_NOSIGNAL, NULL, 0) = 22 poll([{fd=3, events=POLLIN|POLLERR}], 1, -1) = 1 ([{fd=3, revents=POLLIN}]) 此时便可以确定是数据库执行"SELECT VERSION()"语句较慢。 在连接上数据库后,便可以通过执行“explain performance select version()”语句来确定初始化语句执行较慢的原因。更多信息请参考《开发指南》中的“SQL执行计划介绍”章节。 另外还有一种场景不太常见:由于数据库CN所在机器的磁盘满或故障,此时所查询等受影响,无法进行用户认证,导致连接过程挂起,表现为假死。解决此问题清理数据库CN的数据盘空间便可。 TCP连接创建较慢问题。 此问题可以参考上面的初始化语句较慢排查的做法,通过strace跟踪,如果长时间停留在: connect(3, {sa_family=AF_FILE, path="/home/test/tmp/gaussdb_llt1/.s.PGSQL.61052"}, 110) = 0 或者 connect(3, {sa_family=AF_INET, sin_port=htons(61052), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) 那么说明客户端与数据库端建立物理连接过慢,此时应当检查网络是否存在不稳定、网络吞吐量太大的问题。
  • 任务示例 查看gsql的帮助信息。具体执行命令请参见表1。 表1 使用gsql联机帮助 描述 示例 查看版权信息 \copyright 查看 GaussDB (DWS)支持的SQL语句的帮助 查看GaussDB(DWS)支持的SQL语句的帮助 例如,查看GaussDB(DWS)支持的所有SQL语句: 1 2 3 4 5 6 \h Available help: ABORT ALTER DATABAE ALTER DATA SOURCE ... ... 例如,查看CREATE DATABASE命令的参数可使用下面的命令: 1 2 3 4 5 6 7 8 9 10 11 12 13 \help CREATE DATABASE Command: CREATE DATABASE Description: create a new database Syntax: CREATE DATABASE database_name [ [ WITH ] {[ OWNER [=] user_name ]| [ TEMPLATE [=] template ]| [ ENCODING [=] encoding ]| [ LC_COLLATE [=] lc_collate ]| [ LC_CTYPE [=] lc_ctype ]| [ DBCOMPATIBILITY [=] compatibility_type ]| [ TABLESPACE [=] tablespace_name ]| [ CONNECTION LIMIT [=] connlimit ]}[...] ]; 查看gsql命令的帮助 例如,查看gsql支持的命令: 1 2 3 4 5 6 7 \? General \copyright show PostgreSQL usage and distribution terms \g [FILE] or ; execute query (and send results to file or |pipe) \h(\help) [NAME] help on syntax of SQL commands, * for all commands \q quit gsql ... ...
  • 操作步骤 连接数据库时,可以使用如下命令获取帮助信息。 gsql --help 显示如下帮助信息: ...... Usage: gsql [OPTION]... [DBNAME [USERNAME]] General options: -c, --command=COMMAND run only single command (SQL or internal) and exit -d, --dbname=DBNAME database name to connect to (default: "postgres") -f, --file=FILENAME execute commands from file, then exit ...... 连接到数据库后,可以使用如下命令获取帮助信息。 help 显示如下帮助信息: You are using gsql, the command-line interface to gaussdb. Type: \copyright for distribution terms \h for help with SQL commands \? for help with gsql commands \g or terminate with semicolon to execute query \q to quit
  • 在gsql客户端配置SSL认证相关的数字证书参数 GaussDB(DWS)在集群部署完成后,默认已开启SSL认证模式。服务器端证书,私钥以及根证书已经默认配置完成。用户需要配置客户端的相关参数。 登录GaussDB(DWS)管理控制台,在左侧导航栏中,进入“连接客户端”页面。 在“下载驱动程序”区域,单击“下载SSL证书”进行下载。 图1 SSL证书下载 使用文件传输工具(例如WinSCP工具)将SSL证书上传到客户端主机。 例如,将下载的证书“dws_ssl_cert.zip”存放到“/home/dbadmin/dws_ssl/”目录下。 使用SSH远程连接工具(例如PuTTY)登录gsql客户端主机,然后执行以下命令进入SSL证书的存放目录,并解压SSL证书: cd /home/dbadmin/dws_ssl/ unzip dws_ssl_cert.zip 在gsql客户端主机上,执行export命令,配置SSL认证相关的数字证书参数。 SSL认证有两种认证方式:双向认证和单向认证,认证方式不同用户所需配置的客户端环境变量也不同,详细介绍请参见SSL认证方式及客户端参数介绍。 双向认证需配置如下参数: export PGSSLCERT="/home/dbadmin/dws_ssl/sslcert/client.crt" export PGSSLKEY="/home/dbadmin/dws_ssl/sslcert/client.key" export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/dbadmin/dws_ssl/sslcert/cacert.pem" 单向认证需要配置如下参数: export PGSSLMODE="verify-ca" export PGSSLROOTCERT="/home/dbadmin/dws_ssl/sslcert/cacert.pem" 从安全性考虑,建议使用双向认证方式。 配置客户端环境变量,必须包含文件的绝对路径。 修改客户端密钥的权限。 客户端根证书、密钥、证书以及密钥密码加密文件需保证权限为600。如果权限不满足要求,则客户端无法以SSL连接到集群。 chmod 600 client.key chmod 600 client.crt chmod 600 client.key.cipher chmod 600 client.key.rand chmod 600 cacert.pem
  • SSL认证方式及客户端参数介绍 SSL认证有两种认证方式,如表1所示。从安全性考虑,建议使用双向认证方式。 表1 认证方式 认证方式 含义 配置客户端环境变量 维护建议 双向认证(推荐) 客户端验证服务器证书的有效性,同时服务器端也要验证客户端证书的有效性,只有认证成功,连接才能建立。 设置如下环境变量: PGSSLCERT PGSSLKEY PGSSLROOTCERT PGSSLMODE 该方式应用于安全性要求较高的场景。使用此方式时,建议设置客户端的PGSSLMODE变量为verify-ca。确保了网络数据的安全性。 单向认证 客户端只验证服务器证书的有效性,而服务器端不验证客户端证书的有效性。服务器加载证书信息并发送给客户端,客户端使用根证书来验证服务器端证书的有效性。 设置如下环境变量: PGSSLROOTCERT PGSSLMODE 为防止基于TCP链接的欺骗,建议使用SSL证书认证功能。除配置客户端根证书外,建议客户端使用PGSSLMODE变量为verify-ca方式连接。 在客户端配置SSL认证相关的环境变量,详细信息请参见表2。 客户端环境变量的路径以“/home/dbadmin/dws_ssl/”为例,在实际操作中请使用实际路径进行替换。 表2 客户端参数 环境变量 描述 取值范围 PGSSLCERT 指定客户端证书文件,包含客户端的公钥。客户端证书用以表明客户端身份的合法性,公钥将发送给对端用来对数据进行加密。 必须包含文件的绝对路径,如: export PGSSLCERT='/home/dbadmin/dws_ssl/sslcert/client.crt' 默认值:空 PGSSLKEY 指定客户端私钥文件,用以数字签名和对公钥加密的数据进行解密。 必须包含文件的绝对路径,如: export PGSSLKEY='/home/dbadmin/dws_ssl/sslcert/client.key' 默认值:空 PGSSLMODE 设置是否和服务器进行SSL连接协商,以及指定SSL连接的优先级。 取值及含义: disable:只尝试非SSL连接。 allow:首先尝试非SSL连接,如果连接失败,再尝试SSL连接。 prefer:首先尝试SSL连接,如果连接失败,将尝试非SSL连接。 require:只尝试SSL连接。如果存在CA文件,则按设置成verify-ca的方式验证。 verify-ca:只尝试SSL连接,并且验证服务器是否具有由可信任的证书机构签发的证书。 verify-full:GaussDB(DWS)不支持此模式。 默认值:prefer 说明: 若集群外访问客户端时,部分节点出现报错:ssl SYSCALL error。则可执行export PGSSLMODE="allow" 或 export PGSSLMODE="prefer"。 PGSSLROOTCERT 指定为客户端颁发证书的根证书文件,根证书用于验证服务器证书的有效性。 必须包含文件的绝对路径,如: export PGSSLROOTCERT='/home/dbadmin/dws_ssl/sslcert/certca.pem' 默认值:空 PGSSLCRL 指定证书吊销列表文件,用于验证服务器证书是否在废弃证书列表中,如果在,则服务器证书将会被视为无效证书。 必须包含文件的绝对路径,如: export PGSSLCRL='/home/dbadmin/dws_ssl/sslcert/sslcrl-file.crl' 默认值:空
  • 客户端和服务器端SSL连接参数组合情况 客户端最终是否使用SSL加密连接方式、是否验证服务器证书,取决于客户端参数sslmode与服务器端(即GaussDB(DWS)集群侧)参数ssl、require_ssl。参数说明如下: ssl(服务器) ssl参数表示是否开启SSL功能。on表示开启,off表示关闭。 对于集群版本高于1.3.1(包括1.3.1)的集群,默认为on,不支持在GaussDB(DWS)管理控制台上设置。 对于集群版本低于1.3.1的集群,默认为on。ssl参数可通过GaussDB(DWS)管理控制台上集群的“安全设置”页面中的“SSL连接”进行设置。 require_ssl(服务器) require_ssl参数是设置服务器端是否强制要求SSL连接,该参数只有当ssl为on时才有效。on表示服务器端强制要求SSL连接。off表示服务器端对是否通过SSL连接不作强制要求。 对于集群版本高于1.3.1(包括1.3.1)的集群,默认为off。require_ssl参数可通过GaussDB(DWS)管理控制台上集群的“安全设置”页面中的“服务器端是否强制使用SSL连接”进行设置。 对于集群版本低于1.3.1的集群,默认为off,不支持在GaussDB(DWS)管理控制台上设置。 sslmode(客户端) 可在SQL客户端工具中进行设置。 在gsql命令行客户端中,为“PGSSLMODE”参数。 在Data Studio客户端中,为“SSL模式”参数。 客户端参数sslmode与服务器端参数ssl、require_ssl配置组合结果如下: 表3 客户端与服务器端SSL参数组合结果 ssl(服务器) sslmode(客户端) require_ssl(服务器) 结果 on disable on 由于服务器端要求使用 SSL,但客户端针对该连接禁用了 SSL,因此无法建立连接。 disable off 连接未加密。 allow on 连接经过加密。 allow off 连接未加密。 prefer on 连接经过加密。 prefer off 连接经过加密。 require on 连接经过加密。 require off 连接经过加密。 verify-ca on 连接经过加密,且验证了服务器证书。 verify-ca off 连接经过加密,且验证了服务器证书。 off disable on 连接未加密。 disable off 连接未加密。 allow on 连接未加密。 allow off 连接未加密。 prefer on 连接未加密。 prefer off 连接未加密。 require on 由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 require off 由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 verify-ca on 由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。 verify-ca off 由于客户端要求使用 SSL,但服务器端禁用了 SSL,因此无法建立连接。
  • 获取驱动包 根据不同版本的实例,下载不同版本的发布包,如表1所示。如何查询实例的版本,请参考查看云数据库GaussDB界面内核版本。 表1 驱动包下载列表 版本 下载地址 3.x 驱动包 驱动包校验包 2.x 驱动包 驱动包校验包 为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下: 上传软件包和软件包校验包到虚拟机(Linux操作系统)的同一目录下。 执行如下命令,校验软件包完整性。 cat GaussDB_driver.zip.sha256 | sha256sum --check 如果回显OK,则校验通过。 GaussDB_driver.zip: OK
  • 测试连通性 登录E CS 实例,请参见《弹性云服务器用户指南》中“Linux弹性 云服务器远程登录 (VNC方式)”。 在ECS上测试是否可以正常连接到GaussDB实例地址的端口,连接地址和端口通过查询需要连接实例的IP地址和端口号获取。 telnet IP地址 端口 示例: telnet 192.168.0.16 8000 如果提示command not found,请根据ECS使用的操作系统不同,自行安装telnet工具。 如果可以通信,说明网络正常。 如果无法通信,请检查安全组规则。 查看ECS的安全组的出方向规则,如果目的地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将GaussDB实例的IP地址和端口添加到出方向规则。 ECS实例与GaussDB实例在同一VPC内,将GaussDB实例的内网IP地址和端口添加到出方向规则。 ECS实例与GaussDB实例不在同一VPC,将GaussDB实例的公网IP地址和端口添加到出方向规则。 图4 ECS的安全组 查看GaussDB的安全组的入方向规则,如果源地址不为“0.0.0.0/0”且协议端口不为“全部”,需要将ECS实例IP地址和端口添加到入方向规则。 ECS实例与GaussDB实例在同一VPC内,需要将ECS实例的私有IP地址和端口添加到入方向规则。 ECS实例与GaussDB实例不在同一VPC,将ECS实例的弹性公网IP地址和端口添加到入方向规则。 具体操作请参见设置安全组规则。 图5 GaussDB的安全组
  • 购买ECS GaussDB提供gsql工具帮助您在命令行下连接数据库,您需要提前创建一台弹性云服务器用于安装gsql工具。 登录管理控制台,查看是否有弹性云服务器。 有弹性云服务器,执行3。 无弹性云服务器,执行2。 图1 ECS实例 购买弹性云服务器时,选择Euler操作系统。 购买Linux弹性云服务器请参考《弹性云服务器快速入门》中“购买弹性云服务器”章节。 在ECS实例基本信息页,查看ECS实例的区域和VPC。 图2 ECS基本信息 操作系统需要选择Euler操作系统。gsql支持的操作系统版本如下: X86:EulerOS V2.0SP5,Kylin V10 SP2。 鲲鹏服务器:EulerOS V2.0SP8,Kylin V10 SP1。 在GaussDB实例基本信息页,查看GaussDB实例的区域和VPC。 图3 GaussDB基本信息 确认ECS实例与GaussDB实例是否处于同一区域、同一VPC内。 ECS与GaussDB实例在同一区域、同一VPC内,则通过内网连接实例,内网地址如何获取,请参考查询需要连接实例的IP地址。 ECS与GaussDB实例不在同一VPC,则通过公网连接实例,公网地址如何获取,请参考查询需要连接实例的IP地址。请确保ECS和GaussDB实例都要有弹性IP。 ECS如何绑定弹性公网IP,请参考绑定弹性公网IP。 GaussDB实例如何绑定弹性公网IP,请参考绑定弹性公网IP。
  • 环境变量 表5 与gsql相关的环境变量 名称 描述 COLUMNS 如果\set columns为0,则由此参数控制wrapped格式的宽度。这个宽度用于决定在自动扩展的模式下,是否要把宽输出模式变成竖线的格式。 PAGER 如果查询结果无法在一页显示,它们就会被重定向到这个命令。可以用\pset命令关闭分页器。典型的是用命令more或less来实现逐页查看。缺省值是平台相关的。 说明: less的文本显示,受系统环境变量LC_CTYPE影响。 PSQL_EDITOR \e和\ef命令使用环境变量指定的编辑器。变量是按照列出的先后顺序检查的。在Unix系统上默认的编辑工具是vi。 EDITOR VISUAL PSQL_EDITOR_LINENUMBER_ARG 当\e和\ef带上一行数字参数使用时,这个变量指定的命令行参数用于向编辑器传递起始行数。像Emacs或vi这样的编辑器,这只是个加号。如果选项和行号之间需要空白,在变量的值后加一个空格。例如: PSQL_EDITOR_LINENUMBER_ARG = '+' PSQL_EDITOR_LINENUMBER_ARG='--line ' Unix系统默认的是+。 PSQLRC 用户的.gsqlrc文件的交互位置。 SHELL 使用\!命令跟shell执行的命令是一样的效果。 TMPDIR 存储临时文件的目录。缺省是/tmp。
  • 基本功能 连接数据库:可以通过gsql远程连接数据库实例。 gsql创建连接时,会有5分钟超时时间。如果在这个时间内,数据库未正确地接受连接并对身份进行认证,gsql将超时退出。 针对此问题,可以参考常见问题处理。 执行SQL语句:支持交互式地键入并执行SQL语句,也可以执行一个文件中指定的SQL语句。 执行元命令:元命令可以帮助管理员查看数据库对象的信息、查询缓存区信息、格式化SQL输出结果,以及连接到新的数据库等。元命令的详细说明请参见元命令参考。
  • 示例 以把一个查询分成多行输入为例。注意提示符的变化: 1 2 3 4 5 openGauss=# CREATE TABLE HR.areaS( openGauss(# area_ID NUMBER, openGauss(# area_NAME VARCHAR2(25) openGauss-# )tablespace EXAMPLE; CREATE TABLE 查看表的定义: 1 2 3 4 5 6 openGauss=# \d HR.areaS Table "hr.areas" Column | Type | Modifiers -----------+-----------------------+----------- area_id | numeric | not null area_name | character varying(25) | 向HR.areaS表插入四行数据: 1 2 3 4 5 6 7 8 openGauss=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (1, 'Europe'); INSERT 0 1 openGauss=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (2, 'Americas'); INSERT 0 1 openGauss=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (3, 'Asia'); INSERT 0 1 openGauss=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (4, 'Middle East and Africa'); INSERT 0 1 切换提示符: 1 2 openGauss=# \set PROMPT1 '%n@%m %~%R%#' omm@[local] openGauss=# 查看表: 1 2 3 4 5 6 7 8 omm@[local] openGauss=# SELECT * FROM HR.areaS; area_id | area_name ---------+------------------------ 1 | Europe 4 | Middle East and Africa 2 | Americas 3 | Asia (4 rows) 可以用\pset命令以不同的方法显示表: 1 2 3 4 5 6 7 8 9 10 11 12 omm@[local] openGauss=# \pset border 2 Border style is 2. omm@[local] openGauss=# SELECT * FROM HR.areaS; +---------+------------------------+ | area_id | area_name | +---------+------------------------+ | 1 | Europe | | 2 | Americas | | 3 | Asia | | 4 | Middle East and Africa | +---------+------------------------+ (4 rows) 1 2 3 4 5 6 7 8 9 10 omm@[local] openGauss=# \pset border 0 Border style is 0. omm@[local] openGauss=# SELECT * FROM HR.areaS; area_id area_name ------- ---------------------- 1 Europe 2 Americas 3 Asia 4 Middle East and Africa (4 rows) 使用元命令: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 omm@[local] openGauss=# \a \t \x Output format is unaligned. Showing only tuples. Expanded display is on. omm@[local] openGauss=# SELECT * FROM HR.areaS; area_id|2 area_name|Americas area_id|1 area_name|Europe area_id|4 area_name|Middle East and Africa area_id|3 area_name|Asia omm@[local] openGauss=#
  • 操作步骤 使用gsql连接到GaussDB服务器。 gsql工具使用-d参数指定目标数据库名、-U参数指定数据库用户名、-h参数指定主机名、-p参数指定端口号信息。 若未指定数据库名称,则使用初始化时默认生成的数据库名称;若未指定数据库用户名,则默认使用当前操作系统用户作为数据库用户名;当某个值没有前面的参数(-d、-U等)时,若连接的命令中没有指定数据库名(-d)则该参数会被解释成数据库名;如果已经指定数据库名(-d)而没有指定数据库用户名(-U)时,该参数则会被解释成数据库用户名。 使用jack用户连接到远程主机postgres数据库的8000端口。 gsql -h 10.180.123.163 -d postgres -U jack -p 8000 集中式数据库实例中,连接主DataNode时可以把DataNode的IP地址使用逗号分割全部添加到-h后,gsql将依次从前往后连接每个IP地址,查询当前DataNode是否为主DataNode,如果不是则断开连接尝试下一个IP地址,直到找到主DataNode为止。 gsql -h 10.180.123.163,10.180.123.164,10.180.123.165 -d postgres -U jack -p 8000 示例3,参数postgres和omm不属于任何选项时,分别被解释成了数据库名和用户名。 gsql postgres omm -p 8000 等效于 gsql -d postgres -U omm -p 8000 详细的gsql参数请参见命令参考。 执行SQL语句。 以创建数据库human_staff为例。 1 2 CREATE DATABASE human_staff; CREATE DATABASE 通常,输入的命令行在遇到分号的时候结束。如果输入的命令行没有错误,结果就会输出到屏幕上。 执行gsql元命令。 以列出GaussDB中所有的数据库和描述信息为例。 1 2 3 4 5 6 7 8 9 10 11 12 openGauss=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ----------------+----------+-----------+---------+-------+----------------------- human_resource | omm | SQL_ASCII | C | C | postgres | omm | SQL_ASCII | C | C | template0 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm template1 | omm | SQL_ASCII | C | C | =c/omm + | | | | | omm=CTc/omm human_staff | omm | SQL_ASCII | C | C | (5 rows) 更多gsql元命令请参见元命令参考。