达梦数据库常见问题-命令行工具-disql工具

1、DM数据库disql连接工具的存放位置?

      数据库disql连接工具的存放位置,在Linux环境下假设数据库安装目录在/opt/dmdbms/目录下,进入/opt/dmdbms/bin下执行./disql输入对应的用户名和密码即可访问数据库。

       DM命令行工具位于达梦安装目录的bin下,图形化工具位于达梦安装目录的tool下。我们以linux环境为例,假设达梦数据库安装目录为/opt/dmdbms下,则命令行工具都在/opt/dmdbms/bin下,常用的命令行工具包括并不限于:

​ (1) 实例初始化工具dminit

​ (2) 命令行客户端工具disql

​ (3) 逻辑导入导出工具dimp/dexp

​ (4) 数据库校验工具dmdbchk

​ (5) core文件读取工具dmrdc

​ (6) 达梦恢复管理工具dmrman

​ (7) 脱机备份/还原工具dmbackup/dmrestore

​ (8) 快速数据装载工具dmfldr

​ (9) 集群监控工具dmmonitor

​ (10)数据库重演工具dreplay

​ (11)解析日志工具dmlcvt

2、达梦的命令行终端工具如何使用?

      达梦提供了类似于Oracle的sqlplus的终端工具,即达梦命令行客户端工具disql,工具的路径在安装路径下的../dmdbms/bin/下,格式:disql 用户名/密码@IP:端口号

基本使用如下(路径以实际环境为准):

  

 

    当密码后面不跟@ip:port时,则默认为@127.0.0.1:5236

3、disql登录含特殊字符的密码怎么处理/怎么处理@等转义符

详细描述型:

(备注:详细描述型可以帮助您更了解达梦SQL语言处理特殊字符转义字符,如果您急需解决问题,请往下翻到“简单描述型”)

1、不同操作系统

举例1:Windows操作系统

创建用户

create user "TELLER" identified by "TELLER@/!12";

grant "PUBLIC","RESOURCE" to "TELLER";用户权限

使用disql登录报错如下

 

 disql正确的登录如下:

       Ø disql 的关键字符, disql 的要求对连接串的特殊字符需要使用双引号括起来”aaaa/aaaa”, 操作系统的要求需要再在最外加双引号和转义”””aaaa/aaaa”””。例如:用户名为 user01,密码为 aaaa/aaaa,那么连接串要写成: disql user01/”””aaaa/aaaa”””

       Ø 空格,需要使用双引号括起来作为一个整体(这是操作系统的要求)。例如:用户名为 user01,密码为 aaaa aaaa ,处理方法同样需要前后各加3个双引号双引号, disql 要求对双引号需要使用双引号括起来,同时双引号需要转义”aaaa””aaaa”;操作系统要求再对双引号转义和最外层加双引号”””aaaa””””aaaa”””。例如:用户名为 user01,密码为 aaaa”aaaa ,那么连接串要写成:

disqluser01/”””aaaa””””aaaa”””

举例2:Linux操作系统

创建用户

create user "TELLER" identified by "TELLER@/!12";

grant "PUBLIC","RESOURCE" to "TELLER"; --用户权限

  disql登录报错如下:

 Linux登录输入反斜杠结果显示w如下。

原因是字体选择问题导致。

linux,shell输入反斜杠显示'W'。

solution:

字体必须为"Courier New"。

正确的登录方式如下:

bash 的引号设计为:在单引号中,所有的特殊字符都失去其特殊含义;在双引号中,特殊字符包括:美元符($)、反引号(`)、转义符()、感叹号(!)。

如果密码中没有单引号的,应该都只有外面加单引号就可以解决了;如果密码只有单引号,那么可以将单引号用双引号括起来;如果既有单引号又有美元符($)、反引号(`)、转义符()、感叹号(!)四个特殊字符,那么在特殊字符之前全部加转义就好了。

例如:

'aaaaaaaa' 传给 disql 为 aaaaaaaa。

"aaaa'aaaa" 传给 disql 为 aaaa'aaaa。

"aaa'$aaaa" 传给 disql 为 aaa'$aaaa。

其次,在操作系统要求的基础上,增加 disql 对关键字和双引号的要求。

Ø disql 的关键字符, disql 的要求对连接串的特殊字符需要使用双引号括起来。

例如:密码为 aaaaaaaa,使用双引号括起来“aaaaaaaa”, 因为此密码中不含有单引号,根据操作系统的要求直接在最外面加单引号。

例如:用户名为 user01,密码为 aaaa/aaaa,那么连接串要写成:

./disql user01/’”aaaa/aaaa”’

Ø 双引号, disql 要求对双引号需要使用双引号括起来,同时双引号需要转义。 例如:密码为 aaa”aaaa,那么根据 disql 的要求加双引号同时转义

为”aaa””aaaa”,因为没有单引号,根据操作系统的要求直接加单引号。例如:用户名为 user01,密码为 aaa”aaaa,那么连接串要写成: ./disql

user01/’”aaa””aaaa”’

Ø 单引号,根据操作系统的要求,只能将单引号放入双引号中。

例如:用户名为user01,密码为 aaaa'aaaa,那么连接串要写成:

./disql user01/”aaaa'aaaa”

Ø 单引号+操作系统下的特殊字符,根据操作系统的要求,因为单引号只能放在双引号内,同时双引号中还有一些特殊字符不能被识别需要加反斜杠转义。

例如: 用户名为 user01,密码为 aaa'$aaaa,使用双引号括起来,同时对$加反斜杠转义。那么连接串要写成:

./disql user01/”aaa'$aaaa”

Ø 单引号+双引号,根据操作系统的要求,单引号需要放在双引号中,在双引号中表示双引号则使用反斜杠转义双引号。

例如: 用户名为 user01,密码为aaa”'aaaa,根据 disql 的要求双引号作为特殊字符,需要使用双引号在括起来,同时使用双引号对双引号转义”aaa””'aaaa”;同时考虑操作系统的要求,因为含有单引号,只能将整个密码放入双引号中,同时对双引号使用反斜杠转义,

那么连接串要写成:

./disql user01/””aaa””'aaaa””

如何转义双引号?

disql 的要求使用双引号对双引号内的双引号转义。

WINDOWS 命令行,使用双引号或者反斜杠对双引号内的双引号转义。

LINUX 命令行,使用反斜杠对双引号内的双引号转义

简单描述型:

有时候密码包含了@等特殊字符导致disql无法直接连接和运行。需要通过转移符来处理。disql转义符使用如下

  1. linux下,需要使用双引号将密码包含进来,同时外层再使用单引号进行转移,具体例子如下:

​ ./disql SYSDBA/'"abcd@efgh"'@localhost

  1. windows下,需要使用双引号将密码包含进来,同时对双引号使用进行转移,具体例子如下:

​ disql SYSDBA/"abcd@efgh"@localhost

原文地址:https://www.cnblogs.com/zqntx/p/14006808.html