本章內容:
1、基本命令
基本命令
1、psql -U cdnetworks_beian -d cdnetworks_beian #-U指定用戶,-d指定數據庫
2、\l #相當於show databases;
3、\d #想當與show tables;
\d后面跟一個表名,表示顯示這個表的結構定義
\db #顯示創建的tablespace
4、DROP TABLE table_name #刪除表
5、CREATE DATABASE dbname #創建數據庫
6、DROP DATABASE #刪除數據庫
7、CREATE TABLE DEPARTMENT(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
);
#創建表
Mac 安裝postgreSql的啟動方法
To migrate existing data from a previous major version of PostgreSQL, see: https://www.postgresql.org/docs/10/static/upgrading.html You will need your previous PostgreSQL installation from brew to perform `pg_upgrade` or `pg_dumpall` depending on your upgrade method. Do not run `brew cleanup postgresql` until you have performed the migration. To have launchd start postgresql now and restart at login: brew services start postgresql Or, if you don't want/need a background service you can just run: pg_ctl -D /usr/local/var/postgres start ==> Summary 🍺 /usr/local/Cellar/postgresql/10.0: 3,367 files, 38.7MB brew services start postgresql #啟動postgre brew services stop postgresql brew services restart postgresql
也可以用pg_ctl去啟動
pg_ctl -D /usr/local/var/postgres/ -l /usr/local/var/postgres/server.log start #啟動postgre sql pg_ctl -D /usr/local/var/postgres/ -l /usr/local/var/postgres/server.log restart
查看tablespace的方法
SELECT * FROM pg_tablespace; --- \db createuser cdnetworks_beian -s -P #創建炒雞用戶。然后就可以創建表空間了
事務報錯
cdnetworks_beian=# CREATE TABLESPACE cdnetworks_beian LOCATION '/tmp/data/cdnetworks_beian'; CREATE TABLESPACE cdnetworks_beian=# \db List of tablespaces Name | Owner | Location ------------------+------------------+---------------------------- cdnetworks_beian | cdnetworks_beian | /tmp/data/cdnetworks_beian dbtbs01 | wangjin | /usr/local/var/postgres pg_default | wangjin | pg_global | wangjin | (4 rows) #本地可以正常鏈接,並執行命令,但是通過psycopg2會有問題,如下所示: In [17]: cur.execute("CREATE TABLE oui_service (service_id INT PRIMARY KEY,service_name VARCHAR(20)) TABLESPACE cdnetworks_beian;") --------------------------------------------------------------------------- InternalError Traceback (most recent call last) <ipython-input-17-6d2937a75a92> in <module>() ----> 1 cur.execute("CREATE TABLE oui_service (service_id INT PRIMARY KEY,service_name VARCHAR(20)) TABLESPACE cdnetworks_beian;") InternalError: current transaction is aborted, commands ignored until end of transaction block #事務被終端了,這時候需要 conn.commit() 下,讓其回滾,然后再去執行其他的操作
遠程登錄沒有權限

遠程登錄操作,如上報錯,實際上本地是可以登錄,也可以創建任何東西的。
需要修改下配置
1.修改pg_hba.conf文件,配置用戶的訪問權限(#開頭的行是注釋內容):
- # TYPE DATABASE USER CIDR-ADDRESS METHOD
- # "local" is for Unix domain socket connections only
- local all all trust
- # IPv4 local connections:
- host all all 127.0.0.1/32 trust
- host all all 192.168.1.0/24 md5
- # IPv6 local connections:
- host all all ::1/128 trust
其中,第7條是新添加的內容,表示允許網段192.168.1.0上的所有主機使用所有合法的數據庫用戶名訪問數據庫,並提供加密的密碼驗證。
其中,數字24是子網掩碼,表示允許192.168.1.0--192.168.1.255的計算機訪問!
2.修改postgresql.conf文件,將數據庫服務器的監聽模式修改為監聽所有主機發出的連接請求。
定位到#listen_addresses=’localhost’。PostgreSQL安裝完成后,默認是只接受來在本機localhost的連接請 求。
將行開頭都#去掉,將行內容修改為listen_addresses=’*'來允許數據庫服務器監聽來自任何主機的連接請求
然后重啟服務,這是后遠程就可以登錄操作了。
tablesspace 目錄下的文件被刪除了
報錯:
原因:
把這個tablespace指向的文件,放到這個tmp目錄下了,一重啟什么都沒有了,需要重新建立
# drop tablespace if exists cdnetworks_beian;
#create tablespace cdnetworks_beian location '/Users/shell/postgresql/data';
