目录
环境
症状
问题原因
解决方案

环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:4.5.2,4.3.4.9
症状
当安装完安全版数据库,手动初始化数据库时提示失败。

问题原因
权限、用户、环境变量等因素都可能导致此问题发生。

解决方案
一、环境变量因素
1、环境变量文件未配置

[root@mode2 ~]# initdb -D $PGDATA  -e sm4 -c "echo 12345678" > /opt/HighGo4.5.5-see/bin/initdb.log
bash: initdb: 未找到命令...

解决方法

①将数据库环境变量文件添加到.bashrc或.bash_profile中

[root@mode2 ~]# vi ~/.bash_profile 添加以下信息

source /opt/HighGo4.5.5-see/etc/highgodb.env 

[root@mode2 ~]# source ~/.bash_profile

②将具体的环境变量信息填写到.bashrc或.bash_profile中

[root@mode2 ~]# vi ~/.bash_profile 添加以下信息

export HG_BASE=/opt/HighGo4.5.5-see
export HGDB_HOME=/opt/HighGo4.5.5-see
export PGPORT=5866
export PGDATABASE=highgo
export PGDATA=$HGDB_HOME/data
export PATH=$HGDB_HOME/bin:$PATH

[root@mode2 ~]# source ~/.bash_profile

二、用户权限问题
1、执行初始化命令的用户没有创建data目录的权限

[highgo@mode2 ~]$ initdb -D /opt/data1
属于此数据库系统的文件宿主为用户 "highgo".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化.
默认的数据库编码已经相应的设置为 "UTF8".
initdb: 无法为本地化语言环境"zh_CN.UTF-8"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"
禁止为数据页生成校验和.
Data encryption is disabled.
创建目录 /opt/data1 ... initdb: 无法创建目录 "/opt/data1": 权限不够

解决方法

使用root用户将data目录上级目录权限赋予初始化用户,或者直接创建data空目录,将data空目录权限授予初始化用户

[root@mode2 etc]# mkdir /opt/data1
[root@mode2 etc]# chown -R highgo:highgo /opt/data1 
[root@mode2 etc]# su - highgo
[highgo@mode2 ~]$ initdb -D /opt/data1
属于此数据库系统的文件宿主为用户 "highgo".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化.
默认的数据库编码已经相应的设置为 "UTF8".
initdb: 无法为本地化语言环境"zh_CN.UTF-8"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"
禁止为数据页生成校验和.
Data encryption is disabled.
修复已存在目录 /opt/data1 的权限 ... 成功
正在创建子目录 ... 成功
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
选择动态共享内存实现 ......posix
创建配置文件 ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
同步数据到磁盘...成功
警告:为本地连接启动了 "trust" 认证.
你可以通过编辑 pg_hba.conf 更改或你下次
行 initdb 时使用 -A或者--auth-local和--auth-host选项.
Success. You can now start the database server using:
    pg_ctl -D /opt/data1 -l logfile start