设为首页 收藏本站
查看: 1412|回复: 0

[经验分享] Postgresql 和 rails

[复制链接]

尚未签到

发表于 2016-11-19 07:32:21 | 显示全部楼层 |阅读模式
update(05/13/2013)

ubuntu only
ALTER USER postgres with encrypted password 'your_password';


#/etc/postgresql/9.1/main/postgresql.conf
#localhost


Locate the line #listen_addresses = 'localhost' and change it to:
listen_addresses = 'localhost'

sudo -u postgres psql template1

\du list user
这里注意ubuntu下posgresql的gem pg依赖的包是

sudo apt-get install postgresql
sudo apt-get install libpq-dev


Locate the line #listen_addresses = 'localhost' and change it to:
listen_addresses = 'localhost'

sudo -u postgres psql template1

ALTER USER postgres with encrypted password 'your_password';

sudo /etc/init.d/postgresql-8.4 restart

安装
各个平台都有丰富的安装手册,详细可以在google里面搜索。这里是debian上安装 方式,ubuntu类似:
aptitude install postgresql  # 这个是数据库
aptitude install pgadmin3   # 这个是GUI界面的管理工具
这里debian机器(172.16.70.175)是我笔记本,我是需要一个pgadmin3,然后在实 验机器(fedora系统,172.16.70.254)上安装了postgresql。
# rpm -qa|grep postgresql
postgresql-libs-8.3.7-1.fc10.i386
postgresql-8.3.7-1.fc10.i386
postgresql-server-8.3.7-1.fc10.i386
初始化配置
postgresql的用户和系统用户是分开的,我们需要初始化数据库,设置数据库的用 户,配置postgresql的访问权限。
设置密码
如果是在debian/ubuntu,或者fedora这些系统上使用deb或rpm包安装的,都会建立 好postgres用户。我们需要以这个用户权限运行psql命令设置postgres用户密码:
# su postgres -c psql template1
欢迎来到 psql 8.3.7,这是 PostgreSQL 互动式文字终端机。
键入: \copyright 显示发行条款
       \h 显示 SQL 命令的说明
       \? 显示 pgsql 命令的说明
       \g 或者以分号(;)结尾以执行查询
       \q 退出
postgres=# ALTER USER postgres with password 'abc123';
ALTER ROLE
postgres=# \q
上面abc123就是我们设置的密码。
创建数据库
su postgres -c createdb mydb
配置远程链接
1. 首先看看防火墙是否开启,如果开启需要允许5432端口的联通。如不知怎样配置 防火墙,就关闭它。
2. 配置postgresql.conf文件,这个文件在数据库pgsql目录下的data目录里。我在 fedora上现在的地方是/var/lib/pgsql/data/postgresql.conf。
listen_addresses = '*'   #把这句的注释去掉,'*' 号表示监听所有网络地址的链接
3. 配置pg_hba.conf文件,通常和postgresql.conf文件在同一个目录下:
host    all         all         172.16.70.175   255.255.252.0   md5
# 我在最后加上了这一句
# 我的笔记本IP是175, netmask是255.255.252.0
# 这里和我同一网段的机器都以链接
4. 重启postgresql服务
# /etc/init.d/postgresql restart
停止 postgresql 服务:                                     [确定]
启动 postgresql 服务:                                     [确定]
用户管理
创建用户 createuser
createuser 是 SQL 命令 CREATE USER的封装。
命令:createuser [-a] [-A] [-d] [-D] [-e] [-P] [-h 主机名] [-p port] 用户名
参数说明:
[-a]:允许创建其他用户,相当于创建一个超级用户;
[-A]:不允许此用户创建其他用户;
[-d]:允许此用户创建数据库;
[-D]:不允许此用户创建数据库;
[-e]:将执行过程显示到Shell上;
[-P]:创建用户时,同时设置密码;
[-h 主机名]:为某个主机上的Postgres创建用户;
[-p port]:与-h参数一同使用,指定主机的端口。
1. 直接运行createruser命令
# createuser
Enter name of role to add: jianlee
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
createuser: 无法联接到数据库 postgres: 致命错误:  用户 "root" Ident 认证失败
上面命令运行出错的原因是root用户没有权限访问数据库,我们使用前面设置密 码的postgres用户运行命令:
# su postgres
bash-3.2$ createuser
Enter name of role to add: jianlee
Shall the new role be a superuser? (y/n) n  # 如果选择y,那么jianlee就是超级用户
Shall the new role be allowed to create databases? (y/n) y #如果上面没有选择y,这里才出现
Shall the new role be allowed to create more new roles? (y/n) y #同上
2. 为指定的主机和端口创建用户(就是远程创建用户)
# su postgres
postgres@jianlee:/root$ createuser -h 172.16.70.254 -p 5432 -D -A -e turbolinux
Shall the new role be allowed to create more new roles? (y/n) y
口令:     # 输入用户postgres的口令
CREATE ROLE turbolinux NOSUPERUSER NOCREATEDB CREATEROLE INHERIT LOGIN;
这个例子我在debian机器上先su到postgres用户下执行createuser命令,-h和-p 指定远程主机的ip和端口,turbolinux是我想创建的用户名。必须远程 (172.16.70.254)机器上的postgresql服务器启动并且postgres用户可以从 debian(172.16.70.175)访问情况下,才能执行正确。
3. 创建超级用户
$ createuser -P -d -a -e turbo_rd
Enter password for new role:
再输入一遍:
CREATE ROLE turbo_rd PASSWORD 'md5259766bbac3b83cd9195cc0bea6ecec7' \
SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
参数看本节开始的createuser参数说明。
删除用户 dropuser
$ dropuser --help
dropuser removes a PostgreSQL role.
使用方法:
  dropuser [OPTION]... [ROLENAME]
选项:
  -e, --echo                显示发送到服务端的命令
  -i, --interactive         删除任何东西之前给予提示
  -h, --host=HOSTNAM        数据库服务器所在机器的主机名或套接字目录
  -p, --port=PORT           数据库服务器端口号
  -U, --username=USERNAME   联接用户 (不是要删除的用户名)
  -W, --password            force password prompt
  --help                    显示此帮助信息, 然后退出
  --version                 输出版本信息, 然后退出
臭虫报告至 <pgsql-bugs@postgresql.org>.
1. 本地删除
$ dropuser -i -e turbo_rd
Role "turbo_rd" will be permanently removed.
你确定吗? (y/n) y
DROP ROLE turbo_rd;
2. 远程删除
$ dropuser -p 5432 -h 172.16.70.254 -i -e turbolinux
Role "turbolinux" will be permanently removed.
你确定吗? (y/n) y
口令:
DROP ROLE turbolinux;
再次提醒:本次命令的运行者必须是能登录254机器上数据库的用户。'口令'也是 该用户的数据库登录口令。
数据库简单管理
创建数据库 createdb
createdb 中文
注意,运行这个命令的用户需要是postgresql服务器用户,有建库权限。
删除数据库 dropdb
访问数据库
1. 使用psql命令行
$ psql 中文
欢迎来到 psql 8.3.7,这是 PostgreSQL 互动式文字终端机。
键入: \copyright 显示发行条款
       \h 显示 SQL 命令的说明
       \? 显示 pgsql 命令的说明
       \g 或者以分号(;)结尾以执行查询
       \q 退出
中文=#
2. 使用pgadmin3图形界面管理工具
表操作
创建完数据库之后,我们就可以在数据库里面创建表了。我用的postgresql版本是 8.3(debian lenny),表名、表中的所有字段的名字和注释可以是UTF-8字符。但是 用英文名字可以TAB键补全的地方多,不过这里我还是用中文表示。例子是参考 postgresql的wiki上的。
创建新表
首先启动psql命令行程序,然后创建新表:
root@jianlee:~# psql -U postgres -h localhost
欢迎来到 psql 8.3.6,这是 PostgreSQL 互动式文字终端机。
...
postgres=# CREATE TABLE 天气(
城市 varchar(80),  -- 这是城市名字
最低气温 int, -- 一天当中最低气温
最高气温 int, -- 一天当中最高气温
降水量  real, -- 当天的降水量
日期    date -- 日期
);
CREATE TABLE   <== 这里显示创建成功
postgres=#
注意 : 最后一行date字符后面没有 ',' 号!如果加上逗号会出现语法错误。
除了常用的 \q \? 等命令,psql里面的一条命令是以 ';' 结束的。在SQL里面可 以随意使用空白(空格、tab、换行符)。 — 是注释的开始,到换行符结束。 SQL对于大小写不敏感,之用在双引号字符串中才区分大小写。
常见错误
pgadmin3-"服务器工具未安装"
参考:http://techxplorer.com/2008/01/16/installing-postgresql-server-instrumentation-under-ubuntu/
1. 安装 postgresql-contrib 包
2. 运行命令:
psql -U postgres -d postgres -h localhost < \
/usr/share/postgresql/8.3/contrib/adminpack.sql

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302309-1-1.html 上篇帖子: PostgreSQL跨库查询 下篇帖子: PostgreSQL源码编译安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表