`
dyx1024
  • 浏览: 114871 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

PostgreSQL用户创建删除及error while loading shared libraries解决方法

 
阅读更多

1.为数据库创建一个pg_test_user用户;

上面显示没有找到共享库,这时看看/opt/postgresql/lib这个目录有没加到环境变量LD_LIBRARY_PATH中。

输出为空,现在将其导入环境变量。


再次执行创建用户命令。


OK,选yes,创建一个超级用户。

查看一下用户是否存在。

另一种查看用户信息的方法:


2.删除用户

执行dropuser username即可


3.使用标准SQL创建及删除用户方法,此方法在创建完成后需要为用户添加权限,负责使用不了,方法见后面博客文档。

4. 另一种解决动态库加载问题的方法:

以root用户在/etc/ld.so.conf文件中加入so文件所在路径:

添加完成后,执行/sbin/ldconfig –v 使其生效。



5 Linux下动态库使用小结

  1. 静态库和动态库的基本概念

  静态库,是在可执行程序连接时就已经加入到执行码中,在物理上成为执行程序的一部分;使用静态库编译的程序运行时无需该库文件支持,哪里都可以用,但是生成的可执行文件较大。动态库,是在可执行程序启动时加载到执行程序中,可以被多个可执行程序共享使用。使用动态库编译生成的程序相对较小,但运行时需要库文件支持,如果机器里没有这些库文件就不能运行。

  2. 如何使用动态库

  如何程序在连接时使用了共享库,就必须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这两个目录,然后按照/etc/ld.so.conf里面的配置搜索绝对路径。同时,Linux也提供了环境变量LD_LIBRARY_PATH供用户选择使用,用户可以通过设定它来查找除默认路径之外的其他路径,如查找/work/lib路径,你可以在/etc/rc.d/rc.local或其他系统启动后即可执行到的脚本添加如下语句:LD_LIBRARY_PATH =/work/lib:$(LD_LIBRARY_PATH)。并且LD_LIBRARY_PATH路径优先于系统默认路径之前查找(详细参考《使用 LD_LIBRARY_PATH》)。

  不过LD_LIBRARY_PATH的设定作用是全局的,过多的使用可能会影响到其他应用程序的运行,所以多用在调试。(LD_LIBRARY_PATH 的缺陷和使用准则,可以参考《Why LD_LIBRARY_PATH is bad》)。通常情况下推荐还是使用gcc的-R或-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路径查找库,避免了使用LD_LIBRARY_PATH环境变量查找。




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics