由於接觸了華為的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


主要的就是以上配置。
現在可以在客戶端操作數據庫了。
<<完>>
