## PostgreSQL:`9.x` 放弃反抗吧,`MySQL` or `MariaDB`?No。有更好的选择:`PostgreSQL`: ``` # yum list postgresql postgresql.x86_64 8.4.20-6.el6 ``` But,我们需要`9.x`。 访问:https://yum.postgresql.org/ 找到你需要的版本,例如: > [9.6 > CentOS 6 - x86_64]https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm ### 安装 PGDG RPM file ``` # yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm ``` ### 安装 PostgreSQL ``` # yum list postgresql* # yum install postgresql96-server ``` ### 初始化 ``` # service postgresql-9.6 initdb Initializing database: [ OK ] ``` ### 启动 ``` # service postgresql-9.6 start Starting postgresql-9.6 service: [ OK ] # lsof -i:5432 ``` ### 配置用户 * 新建一个Linux新用户,可以取你想要的名字,这里为`xeon`: ``` # adduser xeon ``` PS:如果不新建此用户,后面登录的时候会报错: > psql: FATAL: Peer authentication failed for user "xeon" 原因是: > Your connection failed because by default psql connects over UNIX sockets using peer authentication, that requires the current UNIX user to have the same user name as psql. So you will have to create the UNIX user dev and then login as dev or use sudo -u dev psql test_development for accessing the database (and psql should not ask for a password) * 切换到`pgsql`的默认用户: ``` # su - postgres ``` * 登录到控制台: ``` $ psql ``` * 设置默认用户`postgres`的密码: ``` postgres=# \password postgres Enter new password: ``` * 创建数据库用户`xeon`,并设置密码: ``` postgres=# CREATE USER xeon WITH PASSWORD 'password'; ``` * 创建用户数据库,这里为`xeon_uml`,并指定所有者为`xeon`: ``` postgres=# CREATE DATABASE xeon_uml OWNER xeon; ``` * 将`xeon_uml`数据库的所有权限都赋予`xeon`,否则`xeon`只能登录控制台,没有任何数据库操作权限: ``` postgres=# GRANT ALL PRIVILEGES ON DATABASE xeon_uml to xeon; ``` * 切换到新用户`xeon`: ``` postgres=# <ctrl + d> $ <ctrl + d> # su - xeon $ psql -d xeon_uml xeon_uml=> \l ``` 到目前为止,数据库已经配置好了,但还只能在本机玩耍,我们需要配置支持远程访问,方便管理。 * 远程访问 ``` # cd /var/lib/pgsql/9.6/data/ ``` 调整以下配置: ``` # vim postgresql.conf --- change the line --- # listen_addresses = 'localhost' # what IP address(es) to listen on; --- to --- listen_addresses = '*' ``` 以及: ``` # vim pg_hba.conf --- add a new line --- host all all 121.43.18.66/32 md5 ``` PS1:`121.43.18.66`这个IP是阿里云管理控制台的IP,可能会有更换,不要紧,添加的时候它会提示你哪个IP没有权限的; PS2:`/32`的含义 > 32 -> 192.168.1.1/32 表示必须是来自这个IP地址的访问才合法; 24 -> 192.168.1.0/24 表示只要来自192.168.1.0 ~ 192.168.1.255的都合法; 16 -> 192.168.0.0/16 表示只要来自192.168.0.0 ~ 192.168.255.255的都合法; 8 -> 192.0.0.0/8 表示只要来自192.0.0.0 ~ 192.255.255.255的都合法; 0 -> 0.0.0.0/0 表示全部IP地址都合法,/左边的IP地址随便了只要是合法的IP地址即可; PS3:阿里云管理控制台添加数据库的时候需要填写ECS的外网IP,而不能是内网的,这个坑了我半天时间。 ## 参考资料 * [YUM Installation PostgreSQL](http://wiki.postgresql.org/wiki/YUM_Installation) * [阿里云ECS(CentOS)上安装PostgreSQL9.4 ](http://blog.csdn.net/leolaurel/article/details/51967702)(文内的版本下载地址是错误的,看看就好) * [PostgreSQL 新手入门(阮一峰)](http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html) * [PostgreSQL 允许远程访问设置方法](http://blog.csdn.net/ll136078/article/details/12747403) * [postgresql允许远程连接 linux版](http://jingyan.baidu.com/article/ca41422f3a4a5f1eae99edba.html) * [Postgresql允许远程访问配置修改](http://www.cnblogs.com/jevonsea/archive/2013/01/24/2874184.html) * [配置PostgreSQL远程访问](http://blog.csdn.net/pipi0714/article/details/46047483)