在安装或使用 DM 数据库中,我们经常会需要使用图形化界面,但某些情况下,我们可能会打开图形化界面失败,本章针对在中标麒麟 7.0 环境下,图形化界面打开失败的原因给出对应的解决方法。
本章分别介绍通过 VNC 或者 VMware 连接数据库服务器,和使用 Xmanager 第三方工具连接服务器打开图形化界面的方法。实验环境中标麒麟 7.0 操作系统已安装 xorg-x11 图形化界面相关包,如果 Linux 环境未安装图形化界面,请先安装 xorg-x11 包。
本章内容已在如下环境上测试:
- 操作系统:中标麒麟 7.0
- 数据库版本:达梦 8
- 相关关键字:DM8,图形化界面,安装打开图形化失败。
通过 VNC 或者 VMware Workstation 连接
使用 root 用户登录虚拟机,切换为 dameng 用户,执行 ./DMInstall.bin
安装 DM 数据库,报错:初始化图形界面失败,如果当前监视器窗口不支持图形界面,请进入安装文件所在文件夹并使用 ./DMInstall.bin-i
进行命令行安装。
此时,出现此问题的原因,是无法打开图形化界面,当然,我们也可以使用 /DMInstall.bin-i
非图形化界面方式安装,但此方式不如图形化界面直观,我们完全可以解决图形化界面的问题,来实现图形化界面方式的安装。
执行 xclock 测试图形化界面,提示 “Error:Cann’topen display:”,DISPLAY 后面显示为空,说明没有设置 DISPLAY,如下图:
使用 root 用户执行 xclock,此时可以正常打开小时钟,说明 root 的 DISPLAY 环境变量正常。
使用 root 用户执行 echo $DISPLAY 查看 root 的 DISPLAY 参数值,显示为:2,重新执行 su - dameng
切换为 dameng 用户,执行 export DISPLAY=:2 设置 display 环境变量,再执行 xclock,如下图所示:
[dameng@localhost~]$ export DISPLAY=:2 |
此时可打开小时钟,如下图:
然后再执行 ./DMInstall.bin
就可以正常打开图形化界面了。
有时,我们设置了 DISPLAY 仍然无法打开图形化界面(一般出现在第一次打开图形化界面的情况),此时可使用 root 用户执行 xhost +,然后再切换为 dameng 用户,设置 DISPLAY 后即可打开图形化界面。
在虚拟机环境中,我们也可以直接使用 dameng 用户登录虚拟机,不需要任何设置,执行 ./DMInstall.bin
即可打开图形化界面。
通过 Xmanager 第三方工具连接
Windows 机器使用 Xshell 连接数据库服务器,root 用户登录后切换为 dameng 用户,执行 ./DMInstall.bin
安装 DM 数据库,报错:初始化图形界面失败,如果当前监视器窗口不支持图形界面,请进入安装文件所在文件夹并使用 ./DMInstall.bin-i
进行命令行安装。如下图所示:
问题原因同样是图形化界面的设置,需要设置 DISPLAY。我们来看一下 DISPLAY 环境变量的设置格式:
DISPLAY 环境变量格式为:host:NumA.NumB。
其中,host 指 Xserver 所在的主机主机名或者 IP 地址,图形将显示在这一机器上,可以是启动了图形界面的 Linux/Unix 机器,也可以是安装了 Exceed,X-Deep/32 等 Windows 平台运行的 Xserver 的 Windows 机器,如果 Host 为空,则表示 Xserver 运行于本机;并且图形程序 (Xclient) 使用 unix socket 方式连接到 Xserver,而不是 TCP 方式;使用 TCP 方式连接时,NumA 为连接的端口减去 6000 的值,如果 NumA 为 0,则表示连接到 6000 端口;使用 unix socket 方式连接时则表示连接的 unix socket 的路径,如果为 0,则表示连接到 /tmp/.X11-unix/X0;NumB 则几乎总是 0。
host 的概念很容易理解,其实就是 Windows 机器 IP(A 连接 B 服务器,设置为 A 的 IP)。NumA.NumB 不容易理解是什么意思,但我们可以使用 Xmanager– Passive 工具查看。
注意使用 Xshell 打开图形化界面前,需要打开 Xmanager– Passive,该工具在 Xmanager 安装目录下,一般会在桌面创建快捷方式,如下图:
双击运行 Xmanager- Passive,会在任务栏中出现 Xmanager- Passive 的图标,鼠标悬浮其上会显示图形化监听的设备为[:0.0]。这个值即为 NumA.NumB 的值。
知道了 NumA.NumB 之后,我们查看本机 Windows 与虚拟机连接的 IP 地址,打开 CMD 窗口执行 ipconfig 查看 IP 地址,如下图:
我的虚拟机网络设置的是仅主机模式,主机和虚拟机之间会建立一个内网网络“以太网适配器 VMware Network Adapter VMnet1”。
也可以在虚拟机中使用 root 用户执行 ifconfig 查看虚拟机 IP 地址信息,如下图,可以看到 IP 地址为 192.168.88 开头。
可以看出本机 Windows 机器与虚拟机之间使用“以太网适配器 VMware Network AdapterVMnet1”网络通信,执行如下命令设置 DISPLAY 的 IP 为本机 192.168.88.1,NumA.NumB 为 0.0。
[dameng@localhost~]$ export DISPLAY=192.168.88.1:0.0 |
弹出窗口提示“从未授权的客户端接收到连接申请。请您在启动客户端或者是已知的源时接受”。
选择【是】,打开 clock 小时钟,如下图:
此时,再执行安装脚本 ./DMInstall.bin
即可打开图形化界面。
注意,有些环境可能设置好 DISPLAY 后仍然无法打开(一般是第一次打开的时候),此时在 Linux 主机上以 root 用户执行 xhost + 命令打开 x-window 的访问权限,再设置 DISPLAY 图形化界面就正常了。
[root@localhost~]# xhost + |
另外,使用第三方工具时,要保证 Xmanager–Passive 开启。我们也可以直接使用 dameng 用户连接服务器,不需要任何设置,执行 ./DMInstall.bin
即可打开图形化界面。
如果在使用 DM 数据库时,执行 dbca.sh 打开数据库配置助手图形化界面报如下错误,则也是图形化的问题,按照上述方法设置 DISPLAY 就可以了。
最后,我们来总结一下。
- 使用 VNC 或者 VMware 连接并登录数据库服务器时,在设置 DISPLAY 环境变量时,不需要设置 IP 地址,因为 VNC 和虚拟机登录到服务器是在本机上操作,默认 DISPLAY 不指定 IP 时,指的是本机 localhost。
- 如果在 Windows 机器使用 Xmanager 第三方工具远程连接数据库服务器打开图形化界面时,首先保证 Xmanager–Passive 开启,然后设置 hostIP:NumA.NumB,hostIP 地址是 windows 本机 IP,需要注意,设置 IP 时需要设置为本机与虚拟机之间通讯的网络 IP(如虚拟机设置中网络适配器设置为主机模式,则主机和虚拟机之间会建立一个内网虚拟机网络“以太网适配器 VMware Network Adapter VMnet1”用于主机与虚拟机间通信,设置此 IP 地址)。
- DISPLAY 设置正确的情况下,仍然无法打开图形化界面,比如报错
Xlib:connection to ":0.0" refused by server Xlib: No protocolspecified
等,此时可以使用 root 用户执行 xhost + 命令,再切换用户,设置 DISPLAY 值。 - xclock 命令可以用来测试图形化界面,根据 xclock 的错误来定位图形化界面的设置问题,如果 xclock 能正常打开,说明图形化界面设置没有问题,此时运行安装或者打开 DM 管理工具图形化界面报错,则不是图形化界面的问题,需从错误提示信息再排查原因。