PostgreSQL服務啓動時報錯:FATAL: could not create lock file "/tmp/.s.PGSQL.5432.lock": 權限不夠
PostgreSQL服務啓動時報錯:FATAL: could not open lock file "/tmp/.s.PGSQL.5432.lock": 權限不夠
FATAL: could not create lock file "/tmp/.s.PGSQL.5432.lock": Permission denied
1:添加linux用戶及創建數據庫目錄
addgroup postgresql
adduser -G postgresql postgresql 此處需要輸入密碼,後面有此密碼來鏈接數據庫
mkdir -p /usr/local/pgsql/data
mkdir -p /usr/local/pgsql/log
touch /usr/local/pgsql/log/pgsql.log
2:更改數據庫目錄所屬權限
chown -R postgresql:postgresql /usr/local/pgsql/data
chown -R postgresql:postgresql /usr/local/pgsql/log
chown -R postgresql:postgresql /usr/local/pgsql/log/pgsql.log
chown -R postgresql:postgresql tmp
3:創建數據庫用戶(可忽略)
createuser -sADEP postgresql
此處需要輸入密碼,用來連接數據庫
4:初始化及啓動數據庫
./initdb -D /usr/local/pgsql/data
./pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start
[postgresql@iTOP-4412 /binpost/bin]$./pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pgsql.log start
server starting
5:登陸到postgresql命令行/創建數據庫及表,添加紀錄。
首先需要以之前創建的用戶登錄 postgresql
psql postgres
執行命令的時候,出現如下問題:
[postgresql@iTOP-4412 /binpost/bin]$./psql postgres
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
百度之後是權限的問題:
對/tmp目錄的所屬權限進行設置
[postgresql@iTOP-4412 /binpost/bin]$ su - root
[root@iTOP-4412]# ls
bin etd proc usr
binpost home root var
binpost.tar.bz2 lib sbin work
createsocket linuxrc showtable
dev mnt sys
etc opt tmp
[root@iTOP-4412]# chown -R postgresql:postgresql tmp
[root@iTOP-4412]# su postgresql
[postgresql@iTOP-4412 /binpost/bin]$./pg_ctl -D /usr/local/pgsql/data -l /usr/lo
cal/pgsql/log/pgsql.log start
server starting
[postgresql@iTOP-4412 /binpost/bin]$./psql postgres
psql (9.1.9)
Type "help" for help.
postgres=# CREATE DATABASE psmp;
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+------------+-----------+---------+-------+---------------------------
postgres | postgresql | SQL_ASCII | C | C |
psmp | postgresql | SQL_ASCII | C | C |
template0 | postgresql | SQL_ASCII | C | C | =c/postgresql +
| | | | | postgresql=CTc/postgresql
template1 | postgresql | SQL_ASCII | C | C | =c/postgresql +
| | | | | postgresql=CTc/postgresql
(4 rows)
創建表company並添加紀錄
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL,
JOIN_DATE DATE
);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (1, 'Paul', 32, 'California', 20000.00 ,'2001-07-13');
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (3, 'Teddy', 23, 'Norway', 20000.00, DEFAULT );
6:直接登錄數據庫
[postgresql@iTOP-4412 /binpost/bin]$
[postgresql@iTOP-4412 /binpost/bin]$
[postgresql@iTOP-4412 /binpost/bin]$./psql -d psmp -U postgresql
psql (9.1.9)
Type "help" for help.
psmp=# \d
List of relations
Schema | Name | Type | Owner
--------+---------+-------+------------
public | company | table | postgresql
(1 row)
psmp=# select * from company;
id | name | age | address | salary | join_date
----+-------+-----+----------------------------------------------------+--------+------------
1 | Paul | 32 | California | 20000 | 2001-07-13
3 | Teddy | 23 | Norway | 20000 |
(2 rows)
psmp=#