Linux上安裝postgres 10.5


由於接觸了華為的elk大數據平台,里面封裝的是postgres ,就想着安裝一下,熟悉一下postgres數據。

安裝包下載:https://www.postgresql.org/ftp/source/    

可以選擇自己想下載的版本。這里我們下載v10.5

隨后開始安裝:

1.把包上傳到虛擬機中postgresql-10.5.tar.gz

2.解壓縮:

gunzip postgresql-10.5.tar.gz  

tar -xvf postgresql-10.5.tar

3.進行編輯安裝:

./configure         --預編輯
make
su                       --進root用戶
make install       --安裝
adduser postgres               --創建postgres
mkdir /usr/local/pgsql/data   --創建目錄
chown postgres /usr/local/pgsql/data   
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data   --初始化數據庫

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &        --啟動數據庫

遇到錯誤:
[postgres@master ~]$ more logfile 
2018-12-20 15:47:11.867 CST [28074] LOG:  listening on IPv6 address "::1", port 5432
2018-12-20 15:47:11.867 CST [28074] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2018-12-20 15:47:11.868 CST [28074] FATAL:  could not remove old lock file "/tmp/.s.PGSQL.5432.lock": 不允許的操作
2018-12-20 15:47:11.868 CST [28074] HINT:  The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again.
2018-12-20 15:47:11.868 CST [28074] LOG:  database system is shut down

解決方法:
chown -R postgres:postgres /tmp             --root用戶

/usr/local/pgsql/bin/createdb test             --創建test數據庫
/usr/local/pgsql/bin/psql test                    --進入test數據庫

[postgres@master bin]$ /usr/local/pgsql/bin/psql test      
psql (10.5)
Type "help" for help.

test=# 

啟動或重啟server
先確保是切換到了/pgsql/bin目錄下,並且切換Linux用戶postgres
cd /usr/local/pgsql/bin/
su – postgres
啟動server:
./pg_ctl start -D /usr/local/pgsql/data

重啟:
./pg_ctl restart -D /usr/local/pgsql/data 

waiting for server to shut down....2018-12-20 16:34:51.304 CST [28748] LOG:  received fast shutdown request
2018-12-20 16:34:51.305 CST [28748] LOG:  aborting any active transactions
2018-12-20 16:34:51.306 CST [28944] FATAL:  terminating connection due to administrator command
2018-12-20 16:34:51.307 CST [28945] FATAL:  terminating connection due to administrator command
2018-12-20 16:34:51.307 CST [28942] FATAL:  terminating connection due to administrator command
2018-12-20 16:34:51.308 CST [28941] FATAL:  terminating connection due to administrator command
2018-12-20 16:34:51.310 CST [28748] LOG:  worker process: logical replication launcher (PID 28755) exited with exit code 1
2018-12-20 16:34:51.312 CST [28750] LOG:  shutting down
2018-12-20 16:34:51.327 CST [28748] LOG:  database system is shut down
 done
server stopped
waiting for server to start....2018-12-20 16:34:51.413 CST [29138] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2018-12-20 16:34:51.413 CST [29138] LOG:  listening on IPv6 address "::", port 5432
2018-12-20 16:34:51.415 CST [29138] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2018-12-20 16:34:51.438 CST [29139] LOG:  database system was shut down at 2018-12-20 16:34:51 CST
2018-12-20 16:34:51.442 CST [29138] LOG:  database system is ready to accept connections
 done
server started

新建數據庫和可以登錄數據庫的用戶密碼
確保是在/usr/local/pgsql/bin/目錄下
./createdb mydb

創建用戶(如用戶名為lin,密碼為LinBug)有兩種方式:

第一種:
CREATE USER或CREATE ROLE:CREATE USER是CREATE ROLE的一個別名。
唯一的區別是CREATE USER命令缺省是LOGIN,而CREATE ROLE命令缺省是NOLOGIN。
先進入默認的postgres數據庫:
./psql
然后執行:
CREATE USER zhang WITH PASSWORD 'zhang';
創建成功提示如下
[postgres@master bin]$ ./psql
psql (10.5)
Type "help" for help.

postgres=# CREATE USER zhang WITH PASSWORD 'zhang';
CREATE ROLE
postgres=#
第二種:
 pg封裝的命令方式:
[postgres@master bin]$ ./createuser -P zhang
Enter password for new role:
Enter it again:
2018-12-20 16:04:01.792 CST [28674] ERROR:  role "zhang" already exists
2018-12-20 16:04:01.792 CST [28674] STATEMENT:  CREATE ROLE zhang PASSWORD 'md578d7c325e6ea326d9c1a5c5b1172a59d' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
createuser: creation of new role failed: ERROR:  role "zhang" already exists

訪問數據庫

* 確保在/usr/local/pgsql/bin/目錄下,
以默認用戶名訪問默認數據庫(默認的用戶名和數據庫名都是postgres):
./psql
於是進入PG的交互終端psql
[postgres@master bin]$ ./psql
psql (10.5)
Type "help" for help.

postgres=#

以名為zhang的角色登錄名為mydb的數據庫:

./psql mydb -U zhang
可以看出,當psql終端的提示符為=#時,表示當前登錄的是超級用戶,而當提示符為=>時則為普通用戶
[postgres@master bin]$ ./psql mydb -U zhang
psql (10.5)
Type "help" for help.

mydb=>

遠程訪問數據庫設置
* 遠程訪問數據庫的認證方式主要有很多方式,我只設置基於TCP/IP連接的trust認證方式
需設置兩個配置文件,
1)修改配置文件postgresql.conf,
vim /usr/local/pgsql/data/postgresql.conf
修改監聽地址:
#listen_addresses=’localhost’
#將上面這行改成如下
listen_addresses=’*’

修改配置文件/pgsql/data/pg_hba.conf:
vim /usr/local/pgsql/data/pg_hba.conf
添加一條IP授權記錄(如192.168.2.23),可以對一個網段授權
# 這是在/pgsql/data/pg_hba.conf文件里加
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust

設置完需要重啟數據庫才能生效。

遠程客戶端連接

使用的軟件為:Dbeaver

主要的就是以上配置。

現在可以在客戶端操作數據庫了。

<<完>>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM