亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > PostgreSQL > 正文

PostgreSQL數(shù)據(jù)庫中跨庫訪問解決方案

2020-03-12 23:52:07
字體:
供稿:網(wǎng)友

PostgreSQL跨庫訪問有3種方法:Schema,dblink,postgres_fdw。

方法A:在PG上建立不同SCHEMA,將數(shù)據(jù)和存儲過程分別放到不同的schema上,經(jīng)過權(quán)限管理后進行訪問。

方法A的示例如下:

測試1(測試postgres超級用戶對不同schema下對象的訪問)

查看當前數(shù)據(jù)庫中的schema

 postgres=# /dn

 List of schemas

 Name | Owner

-------------------+---------

dbms_job_procedure | postgres pgagent | postgres

 postgres | postgres

 public | postgres

 (4 rows)

(當前連接數(shù)據(jù)庫的用戶為postgres)

postgres=# select user;

user

----------

postgres

 (1 row)

創(chuàng)建名為test1的schema

 postgres=# create schema test1;

 CREATE SCHEMA

創(chuàng)建模式test1下的對象,表ticket1

 postgres=# create table test1.ticket1(id int);

 CREATE TABLE

可以看到并沒有我們之前建立的表

 postgres=# /d

List of relations

 Schema | Name | Type | Owner

-------------------------+---------

public | dept | table | postgres

 public | emp | table | postgres

 public | jobhist | table | postgres

 public | next_empno | sequence | postgres

 public | salesemp | view | postgres

 (5 rows)

在對象前加schema,postgres用戶可以訪問ticket1表

postgres=# select * from test1.ticket1;

id

-------------------------------------------------

(0 rows)

查看模式 搜索路徑

 postgres=# show search_path ;

 search_path

----------------

"$user",public

 (1 row)

把創(chuàng)建的模式test1添加到模式搜索路徑

postgres=# set search_path to "$user",public,test1;

 SET

 postgres=# show search_path ;

 search_path

------------------------

"$user", public, test1

 (1 row)

 為了訪問方便,在搜索路徑中添加schema對象之后既可以看到該模式下的表,也可以直接進行搜索,而不用添加schema前綴。(這里因為是超級用戶,所以不用給postgres賦權(quán),如果是普通用戶,想要訪問,需要賦權(quán))

 postgres=# /d

List of relations

 Schema | Name | Type | Owner

-------------------------+---------

public | dept | table | postgres

 public | emp | table | postgres

 public | jobhist | table | postgres

 public | next_empno | sequence | postgres

 public | salesemp | view | postgres

 test1 | ticket1 | table | postgres

 (6 rows)

 postgres=# select * from ticket1;

 id

--------------------------------------------

(0 rows)

 測試2:

 在postgres用戶下建立名為test2的schema

 postgres=# create schema test2;

 CREATE SCHEMA

 postgres=# create table test2.ticket2(id int);

 CREATE TABLE

建立兩個普通用戶

 postgres=# create role test1 login password '123';

 CREATE ROLE

 postgres=# create role test2 login password '123';

 CREATE ROLE

普通用戶連接數(shù)據(jù)庫

 postgres=# /c postgres test2;

 Password for user test2:

You are now connected to database "postgres" as user "test2".

 postgres=> /d

 List of relations

 Schema | Name | Type | Owner

-------------------------+---------

public | dept | table | postgres

 public | emp | table | postgres

 public | jobhist | table | postgres

 public | next_empno | sequence | postgres

 public | salesemp | view | postgres

 (5 rows)

postgres=> show search_path ;

 search_path

----------------

"$user",public

 (1 row)

postgres=> set search_path to "$user",public,test1;

 SET

postgres=> /d

 List of relations

 Schema | Name | Type | Owner

-------------------------+---------

public | dept | table | postgres

 public | emp | table | postgres

 public | jobhist | table | postgres

 public | next_empno | sequence | postgres

 public | salesemp | view | postgres

 test1 | ticket1 | table | postgres

 test2 | ticket2 | table | postgres

 (11 rows)

 可以看到test2用戶模式下的ticket2表,但是訪問時權(quán)限不足。

 postgres=> select * from test2.ticket2;

 ERROR: permission denied for relation ticket2

 postgres=> select * from ticket2;

ERROR: permission denied for relation ticket2

 通過postgres超級用戶賦予權(quán)限,即可訪問

 postgres=# grant select on all tables in schema test2 to test1;

 GRANT

 postgres=> select * from test2.ticket2;

 id

---------------------------------------------------

(0 rows)

postgres=> select * from ticket2;

id

---------------------------------------------------

(0 rows)

方法B:通過dblink實現(xiàn)跨庫訪問

方法B測試示例如下:

環(huán)境:本地:192.168.56.88 數(shù)據(jù)庫:postgres

 遠程:192.168.56.99 數(shù)據(jù)庫:test

 

PostgreSQL通過dblink實現(xiàn)跨庫訪問

測試1:在同一個實例下分別建立兩個數(shù)據(jù)庫,通過dblink 實現(xiàn)跨庫訪問

postgres=# create database test;

CREATE DATABASE

postgres=# /l

                             List of databases

   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges 

-----------+----------+----------+---------+-------+-----------------------

 postgres  | postgres | UTF8     | C       | C     |

 template0 | postgres | UTF8     | C       | C     | =c/postgres          +

           |          |          |         |       | postgres=CTc/postgres

 template1 | postgres | UTF8     | C       | C     | =c/postgres          +

           |          |          |         |       | postgres=CTc/postgres

 test      | postgres | UTF8     | C       | C     |

(4 rows)

postgres=# /c test

You are now connected to database "test" as user "postgres".

test=# create table test(id int);

CREATE TABLE

test=# /d

        List of relations

 Schema | Name | Type  |  Owner 

--------+------+-------+----------

 public | test | table | postgres

(1 row)

test=# create table test2(id int);

CREATE TABLE

test=# insert into test values ('1111');

INSERT 0 1

test=# /c postgres

You are now connected to database "postgres" as user "postgres".

在postgres數(shù)據(jù)庫中建立dblink連接到test數(shù)據(jù)庫

postgres=# create extension dblink;

CREATE EXTENSION

postgres=# select * from pg_extension;

 extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition

---------+----------+--------------+----------------+------------+-----------+--------------

 plpgsql |       10 |           11 | f              | 1.0        |           |

 dblink  |       10 |         2200 | t              | 1.1        |           |

(2 rows)

postgres=# select dblink_connect('test_dblink','dbname=test host=localhost port=5432 user=postgres password=postgres');

 dblink_connect

----------------

 OK

(1 row)

postgres=# select * from dblink('test_dblink','select * from test') as t1(id int);

  id

------

 1111

(1 row)

通過建立dblink,在postgres數(shù)據(jù)庫可以很容易的訪問到test數(shù)據(jù)庫中的數(shù)據(jù)。

為了訪問test數(shù)據(jù)庫中的數(shù)據(jù)方便,我們可以建立一個視圖,操作如下,我們只需要查詢視圖中的內(nèi)容即可。

postgres=# CREATE VIEW testdb_dblink AS 

postgres-# SELECT * FROM dblink('hostaddr=127.0.0.1 port=5432 dbname=test user=postgres password=postgres', 'SELECT * From test') AS t(id int);

CREATE VIEW

postgres=# /d

                  List of relations

 Schema |          Name           | Type  |  Owner 

--------+-------------------------+-------+----------

 public | ptest1                  | table | postgres

 public | ptest2                  | table | postgres

 public | remote_people_user_name | view  | postgres

 public | testdb_dblink           | view  | postgres

(4 rows)

postgres=# select * from testdb_dblink ;

  id

------

 1111

(1 row)

測試2:

在兩個實例下分別創(chuàng)建數(shù)據(jù)庫,然后通過dblink實現(xiàn)垮庫訪問。

實例1:

首先需要配置下路由配置,添加一行命令-A INPUT -s 192.168.0.0/16 -j ACCEPT

[root@darry etc]# vi /etc/sysconfig/iptables

...

添加-A INPUT -s 192.168.0.0/16 -j ACCEPT  即允許192.168.0.0的網(wǎng)段訪問

....

[root@darry etc]# service iptables reload

iptables: Trying to reload firewall rules:                 [  OK  ]

在IP為192.168.56.88(本地)的postgres數(shù)據(jù)庫中建立extension

postgres=# create extension dblink;

CREATE EXTENSION

postgres=# select  * from pg_extension;

 extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition

---------+----------+--------------+----------------+------------+-----------+--------------

 plpgsql |       10 |           11 | f              | 1.0        |           |

 dblink  |       10 |         2200 | t              | 1.1        |           |

(2 rows)

建立dblink 訪問IP為192.168.56.99(遠程)數(shù)據(jù)庫

postgres=# select dblink_connect('test_dblink','dbname=test host=192.168.56.99 port=5432 user=postgres password=postgres');

 dblink_connect

----------------

 OK

(1 row)

 

postgres=# select * from dblink('test_dblink','select * from test') as t1(id int);

  id

------

 1111

(1 row)

跨庫事務測試

連接遠程數(shù)據(jù)庫

postgres=# select dblink_connect('test_dblink','dbname=test host=192.168.56.99 port=5432 user=postgres password=postgres');

 dblink_connect

----------------

 OK

(1 row)

在遠程服務器上開始一個事務

postgres=# select dblink_exec('test_dblink','begin;');

 dblink_exec

-------------

 BEGIN

(1 row)

插入一條數(shù)據(jù)

postgres=# select dblink_exec('test_dblink','insert into test values(7777);');

 dblink_exec

-------------

 INSERT 0 1

(1 row)

經(jīng)查看遠程服務器上已經(jīng)插入一條數(shù)據(jù)

postgres=# select * from dblink('test_dblink','select * from test') as t1(id int);

  id 

-------

  1111

  2222

  3333

  4444

  6666

 33333

  7777

(11 rows)

在遠程數(shù)據(jù)庫中查看未發(fā)現(xiàn)數(shù)據(jù),因為事務未提交

test=# select * from test;

  id 

-------

  1111

  2222

  3333

  4444

  6666

 33333

在本地數(shù)據(jù)庫中提交遠程連接數(shù)據(jù)庫中的事務

postgres=# select dblink_exec('test_dblink','commit;');

 dblink_exec

-------------

 COMMIT

(1 row)

再次查看

postgres=# select * from dblink('test_dblink','select * from test') as t1(id int);

  id 

-------

  1111

  2222

  3333

  4444

  6666

 33333

  7777

遠程數(shù)據(jù)庫中也存在

test=# select * from test;

  id 

-------

  1111

  2222

  3333

  4444

  6666

 33333

  7777

若換成將commit替換成rollback則插入取消

postgres=# select dblink_exec('test_dblink','begin;');

 dblink_exec

-------------

 BEGIN

(1 row)

postgres=# select dblink_exec('test_dblink','insert into test values(99999);');

 dblink_exec

-------------

 INSERT 0 1

postgres=# select * from dblink('test_dblink','select * from test') as t1(id int);

  id 

-------

  1111

  2222

  3333

  4444

  6666

 33333

  7777

 99999

執(zhí)行回滾操作

postgres=# select dblink_exec('test_dblink','rollback;');

 dblink_exec

-------------

 ROLLBACK

(1 row)

經(jīng)查看回滾之后,不記錄之前插入的數(shù)據(jù)

postgres=# select * from dblink('test_dblink','select * from test') as t1(id int);

   id 

-------

  1111

  2222

  3333

  4444

  6666

 33333

  7777

方法C:通過postgres_fdw實現(xiàn)跨庫訪問

環(huán)境:本地:192.168.0.14,遠程:192.168.0.17,PG:9.3.9兩臺機器的測試用戶及數(shù)據(jù)庫均為:test,test

1.在本地數(shù)據(jù)庫中創(chuàng)建postgres_fdw extension.

[postgres@minion1 bin]$ ./psql test test

psql (9.3.9)

Type "help" for help.

test=# /c test test

You are now connected to database "test" as user "test".

test=# create extension postgres_fdw ;

CREATE EXTENSION

2.在遠程數(shù)據(jù)庫上生成測試數(shù)據(jù) :

[postgres@minion4 bin]$ ./psql test test

psql (9.3.9)

Type "help" for help.

test=# CREATE TYPE user_enum AS ENUM ('foo', 'bar', 'buz');

CREATE TYPE

test=# /dT

        List of data types

 Schema |   Name    | Description

--------+-----------+-------------

 public | user_enum |

(1 row)

 

test=# select oid from pg_type where typname='user_enum';

  oid

-------

 16902

(1 row)

test=# CREATE SCHEMA test;

CREATE SCHEMA

test=# CREATE TABLE test.test1 (

test(# c1 int NOT NULL,

test(# c2 int NOT NULL,

test(# c3 text,

test(# c4 timestamptz,

test(# c5 timestamp,

test(# c6 varchar(10),

test(# c7 char(10),

test(# c8 user_enum,

test(# CONSTRAINT t1_pkey PRIMARY KEY (c1)

test(# );

CREATE TABLE

test=# CREATE TABLE test.test2 (

test(# c1 int NOT NULL,

test(# c2 text,

test(# CONSTRAINT t2_pkey PRIMARY KEY (c1)

test(# );

CREATE TABLE

test=# INSERT INTO test.test1

test-# SELECT id,

test-#        id % 10,

test-#        to_char(id, 'FM00000'),

test-#        '1970-01-01'::timestamptz + ((id % 100) || ' days')::interval,

test-#        '1970-01-01'::timestamp + ((id % 100) || ' days')::interval,

test-#        id % 10,

test-#        id % 10,

test-#        'foo'::user_enum

test-# FROM generate_series(1, 1000) id;

INSERT 0 1000

test=# INSERT INTO test.test2

test-# SELECT id,

test-#        'AAA' || to_char(id, 'FM000')

test-# FROM generate_series(1, 100) id;

INSERT 0 100

test=# analyze test.test1;

ANALYZE

test=# analyze test.test2;

ANALYZE

3.在本地數(shù)據(jù)庫中創(chuàng)建server

test=# CREATE SERVER s1 FOREIGN DATA WRAPPER postgres_fdw;

CREATE SERVER

test=# select * from pg_foreign_server ;

 srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions

---------+----------+--------+---------+------------+--------+------------

 s1      |    17444 |  17449 |         |            |        |

(1 row)

test=# alter server s1 options ( add hostaddr '192.168.0.17', add port '5432', add dbname 'test');

ALTER SERVER

4.SERVER賦權(quán) :

test=# grant usage on foreign server s1 to test;

GRANT

test=# select * from pg_foreign_server ;

 srvname | srvowner | srvfdw | srvtype | srvversion |    srvacl     |                  srvoptions  

             

---------+----------+--------+---------+------------+---------------+--------------------------------

---------------

 s1      |    17444 |  17449 |         |            | {test=U/test} | {hostaddr=192.168.0.17,port=543

2,dbname=test}

(1 row)

5.在本地數(shù)據(jù)庫中創(chuàng)建user mapping :

test=# create user mapping for test server s1 options(user 'test',password 'test');

CREATE USER MAPPING

6.在本地數(shù)據(jù)庫中創(chuàng)建foreign table

test=# CREATE TYPE user_enum AS ENUM ('foo', 'bar', 'buz');

CREATE TYPE

test=# /dT

        List of data types

 Schema |   Name    | Description

--------+-----------+-------------

 public | user_enum |

(1 row)

 

test=# select oid from pg_type where typname='user_enum';

  oid

-------

 17453

(1 row)

test=# CREATE FOREIGN TABLE ft1 (

test(#  c0 int,

test(#  c1 int NOT NULL,

test(#  c2 int NOT NULL,

test(#  c3 text,

test(#  c4 timestamptz,

test(#  c5 timestamp,

test(#  c6 varchar(10),

test(#  c7 char(10),

test(#  c8 user_enum

test(#  ) SERVER s1 options(schema_name 'test', table_name 'test1');

CREATE FOREIGN TABLE

test=# select * from ft1 limit 1;

ERROR:  column "c0" does not exist

CONTEXT:  Remote SQL command: SELECT c0, c1, c2, c3, c4, c5, c6, c7, c8 FROM test.test1

test=# alter foreign table ft1 drop column c0;

ALTER FOREIGN TABLE

test=# select * from ft1 limit 1;

 c1 | c2 |  c3   |           c4           |         c5          | c6 |     c7     | c8

----+----+-------+------------------------+---------------------+----+------------+-----

  1 |  1 | 00001 | 1970-01-02 00:00:00+08 | 1970-01-02 00:00:00 | 1  | 1          | foo

(1 row)

test=# create foreign table ft2 (c2 text,c1 int not null) server s1 options(schema_name 'test',table_name 'test2');

CREATE FOREIGN TABLE

test=# select * from ft2 limit 1;

   c2   | c1

--------+----

 AAA001 |  1

(1 row)

test=# create foreign table ft3(c2 text,c3 int not null) server s1 options(schema_name 'test',table_name 'test2');

CREATE FOREIGN TABLE

test=# select * from ft3 limit 1;

ERROR:  column "c3" does not exist

CONTEXT:  Remote SQL command: SELECT c2, c3 FROM test.test2

test=# alter foreign table ft3 alter column c3 options (column_name 'c1');

ALTER FOREIGN TABLE

test=# select * from ft3 limit 1;

   c2   | c3

--------+----

 AAA001 |  1

(1 row)

test=# create foreign table ft4(c2 text,c3 int options (column_name 'c1') not null) server s1 options(schema_name 'test',table_name 'test2');

CREATE FOREIGN TABLE

test=# select * from ft4 limit 2;

   c2   | c3

--------+----

 AAA001 |  1

 AAA002 |  2

(2 rows)

PostgreSQL跨庫訪問事務測試

遠程機器創(chuàng)建測試表

test=# create table test3(id int);

CREATE TABLE

test=# select * from test3;

 id

----

(0 rows)

本地機器測試

創(chuàng)建對應的外部表

test=# create foreign table ft_test3(id int) server s1 options(schema_name 'test',table_name 'test3');

CREATE FOREIGN TABLE

test=# select * from ft_test3 ;

 id

----

(0 rows)

本地機器事務測試(不提交)

test=# begin;

BEGIN

test=# insert into ft_test3 values (100);

INSERT 0 1

test=# insert into ft_test3 values (200);

INSERT 0 1

test=# insert into ft_test3 values (300);

INSERT 0 1

test=# select * from ft_test3 ;

 id

-----

 100

 200

 300

(3 rows)

test=# rollback;

ROLLBACK

test=# select * from ft_test3 ;

 id

----

(0 rows)

本地機器事務測試(提交)

test=# begin;

BEGIN

test=# insert into ft_test3 values (1000);

INSERT 0 1

test=# insert into ft_test3 values (2000);

INSERT 0 1

test=# insert into ft_test3 values (3000);

INSERT 0 1

test=# end;

COMMIT

test=# select * from ft_test3 ;

  id

------

 1000

 2000

 3000

(3 rows)

test=# rollback;

NOTICE:  there is no transaction in progress

ROLLBACK

 

注:相關(guān)教程知識閱讀請移步到PostgreSQL頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
久久99久久98精品免观看软件| 久久资源在线| 亚洲国产精品成人综合久久久| 久久看人人爽人人| av漫画网站在线观看| 亚洲福利视频专区| 四虎5151久久欧美毛片| 久久精品国产亚洲一区二区三区| 捆绑调教一区二区三区| 欧美日韩一区二区三区视频| 国产日韩欧美一区二区三区乱码| 国产91精品一区| 粉嫩小泬无遮挡久久久久久| 蜜桃传媒一区二区三区| 成人无遮挡免费网站视频在线观看| 国产视频网站一区二区三区| 香蕉久久精品| 国产污视频在线播放| 夜夜春成人影院| 国产不卡123| 欧美色中文字幕| 91丨九色丨蝌蚪| 成人在线播放视频| 精品一区二区三区日本| 3p在线观看| 欧美激情一区二区三区在线| 国产制服丝袜一区| 国产 日韩 欧美 在线| 日韩亚洲欧美中文三级| 国产精品视频公开费视频| 91精品推荐| 国产片侵犯亲女视频播放| 欧美图片一区二区三区| 在线播放国产一区中文字幕剧情欧美| 日韩免费啪啪| 国产一区二区三区美女| 大陆一级毛片免费观看| 中文字幕精品视频在线观看| 日韩aaaaaa| 成人av免费网站| 韩国视频一区| 国产成人免费av一区二区午夜| 激情图片在线观看高清国产| 亚洲国产成人va在线观看天堂| 一区二区三区电影网| 在线视频不卡一区二区| 国产视频一区二区在线| 全部免费毛片在线播放一个| 亚洲一级二级三级在线免费观看| 国产成人aa在线观看网站站| 无码人妻精品一区二区蜜桃百度| 一本色道久久综合精品婷婷| 国内精品久久久久久久影视麻豆| 久久国产精品久久久久| 91精品国产综合久久久久久久| 人妻无码一区二区三区四区| 香蕉精品久久| 韩日欧美一区二区| 四虎影视4hu4虎成人| 天天射天天干天天| 日韩成人精品一区| 国内自拍视频网| 91免费版在线看| 国产精品入口麻豆电影| 在线播放黄色网址| 亚洲欧美偷拍卡通变态| 成人看片在线观看| 久久综合九色综合网站| 成人久久精品视频| 欧美精品一级片| 久草视频在线免费看| 免费看欧美一级片| 日本一区免费视频| 免费毛片在线播放| 四季av一区二区凹凸精品| 欧美jizzhd精品欧美满| 日本乱码高清不卡字幕| 黄网站免费在线观看| 免费的一级黄色片| 国产aⅴ一区二区三区| 欧美卡1卡2卡| 欧美精品丝袜中出| 日韩在线视频国产| 国产精品久久久免费| 午夜欧美性电影| 国产在线视频一区| 亚洲欧美在线免费| 人人天天夜夜| 超碰在线网址| 超碰在线观看99| 亚洲精品天堂在线| 国产三级视频在线播放线观看| 久久久免费观看| 久久久99久久| 满满都是荷尔蒙韩剧在线观看| 亚洲精品自在在线观看| 国产成人精品视频ⅴa片软件竹菊| 成年人一级黄色片| 少妇太紧太爽又黄又硬又爽小说| 欧美日韩精品在线| 国产aⅴ精品一区二区四区| 国产精九九网站漫画| 在线观看的网站你懂的| 无码小电影在线观看网站免费| 美女三级黄色片| 午夜精品偷拍| 国产一区二区三区小说| 色嗨嗨av一区二区三区| fc2ppv国产精品久久| 中国丰满人妻videoshd| 黄色a级在线观看| 99蜜桃臀久久久欧美精品网站| 小黄文在线观看| yy111111少妇影院日韩夜片| 亚洲欧美综合久久久久久v动漫| 亚州av日韩av| 狠狠干视频网站| 2022中文字幕| 国产美女99p| 国产精品久久久久久久第一福利| 亚洲综合色自拍一区| www.天天操.com| 91网站在线免费观看| www..69.hd| 欧美18hd| 中文字幕第50页| 99riav一区二区三区| 免费白白视频| 成人日韩在线观看| 91美女片黄在线观看91美女| 久久综合五月天婷婷伊人| 国产欧美不卡| 五月天婷亚洲天综合网鲁鲁鲁| 色婷婷av一区二区三区软件| 日韩精品国内| 樱花草www在线| av在线电影播放| 亚洲精品乱码久久久久久黑人| 北岛玲精品视频在线观看| 韩国三级hd中文字幕有哪些| 欧美另类老肥妇| 销魂美女一区二区三区视频在线| 日韩在线视频线视频免费网站| 亚洲国产午夜精品| 久久精品视频导航| 激情综合五月网| 亚洲图区综合网| 久久精品噜噜噜成人av农村| 婷婷精品国产一区二区三区日韩| 国产久卡久卡久卡久卡视频精品| 亚洲欧洲日韩精品在线| 亚洲国产精品一区二区第一页| 亚洲a∨日韩av高清在线观看| 色综合中文字幕国产| 高清一区在线观看| 最近中文字幕mv在线一区二区三区四区| 欧美激情黄色片| 日韩一二三在线视频播| 久久久久国产免费免费| 日韩精品最新网址| 无码精品视频一区二区三区| 日韩精品一级中文字幕精品视频免费观看| 国产一区二区三区在线观看网站| 国产精品久久久久久麻豆一区软件| 久草资源在线视频| 国产日产欧产精品推荐色| 久久久久久香蕉| 一区二区欧美视频| av福利导福航大全在线| www.51色.com| 日韩在线视频免费播放| 一本大道亚洲视频| 国产一区二区三区免费不卡| 国产一二三区av| 一区二区精品在线| 日韩av网站在线观看| 一个色在线视频| 丝袜制服一区二区三区| 狠狠色狠狠色综合| 国产卡一卡2卡三卡免费视频| 妞干网在线观看| 国产亚洲网站| 成人动漫视频| 日本高清视频在线| 少妇人妻丰满做爰xxx| 美女高潮在线观看| 日本一区精品久久久久影院| 日本精品一区二区三区四区的功能| 免费看黄色三级| 岳毛多又紧做起爽| 国内外成人免费在线视频| 国产欧美一区二| 日韩美女视频免费在线观看| 中文字幕在线视频一区二区三区| 伊人久久婷婷| 亚洲欧美自拍另类日韩| 高清在线视频不卡| 91日韩在线视频| 夜色激情一区二区| 日韩精品伦理第一区| 成人午夜看片网址| 牲欧美videos精品| 亚洲蜜臀av乱码久久精品蜜桃| 91福利国产成人精品照片| 另类人妖一区二区av| 变态黄色小视频网站| 欧美另类变人与禽xxxxx| 欧美va亚洲va国产综合| 中文字幕日韩欧美精品在线观看| 日本最新不卡在线| 成人欧美一区二区三区在线播放| 91精品网站在线观看| 精品少妇人妻一区二区黑料社区| 欧美激情喷水视频| 日韩中文理论片| 成人午夜免费影院| 久操视频免费在线观看| 国产视频第一页在线观看| 中文字幕视频免费观看| 私人高清影院 强乱中文字| 日韩色性视频| 国产高潮久久久| 亚洲免费视频播放| 多野结衣av一区| 国产婷婷色一区二区三区| 51社区在线成人免费视频| 欧美××××黑人××性爽| 91精品国产高清久久久久久91裸体| 91超碰在线观看| 日日干夜夜草| 巨胸喷奶水www久久久| 男人和女人啪啪网站| 欧美在线不卡一区| 18国产精品| baoyu777.永久免费视频| 欧美大片网站| 亚洲黄色一区二区| 蜜桃狠狠狠狠狠狠狠狠狠| 国精产品一区一区三区免费视频| 噜噜噜久久亚洲精品国产品麻豆| 欧美乱妇高清无乱码| 一级片avav网址| 香蕉精品视频在线| 性8sex亚洲区入口| 成人免费在线视频播放| 国产麻豆一区二区三区| 狠狠色丁香久久婷婷综合丁香| 色偷偷av一区二区三区| 欧美人妻精品一区二区免费看| 亚洲一区二区三区久久| 极品少妇一区二区三区精品视频| 尤物视频在线看| 亚洲精品一区二区三区香蕉| 97免费中文视频在线观看| 国内外成人免费在线视频| 日韩中文字幕在线精品| 日本精品免费在线观看| 欧美色图亚洲自拍| 白嫩亚洲一区二区三区| 欧美视频免费在线观看| 天天干天天干天天干| 大陆一级毛片免费观看| 久久久久福利视频| 国产麻豆剧传媒精品国产av| 日韩精选在线观看| 免费a级毛片在线观看| 欧美一区亚洲一区| 亚洲黄一区二区| 欧美日韩怡红院| 美女喷白浆视频| 2017亚洲男人天堂| 欧美日韩在线精品一区二区三区激情| 亚洲柠檬福利资源导航| 一区二区三区在线观看欧美| 草逼视频免费看| 九九在线观看视频| 中文字幕一区二区人妻痴汉电车| 爱爱永久免费视频| 亚洲国产精品yw在线观看| 中文成人av在线| 天堂精品高清1区2区3区| 一本大道五月香蕉| 日本在线视频1区| 9l亚洲国产成人精品一区二三| 国产成年人在线观看| 伊人成年综合网| 日本女人高潮视频| 国产精品白嫩初高中害羞小美女| 国产97免费视| 囯产精品久久久久久| 日韩av成人网| 能在线观看的av| 秋霞精品一区二区三区| 亚洲一区二区三区四区| 国产成人a亚洲精v品无码| 日韩黄色大片| 亚洲国产又黄又爽女人高潮的| 天天操天天操天天操| 亚洲国产精品嫩草影院| 视色,视色影院,视色影库,视色网| 精品国产亚洲一区二区三区在线观看| 99精品视频免费在线观看| 欧美电影免费观看高清完整| 精品精品视频| 天天鲁一鲁摸一摸爽一爽| 成年美女网站| 日韩无套无码精品| 天堂免费在线视频| 91免费看蜜桃| 日韩亚洲欧美成人| 91网址在线观看| 久久91精品视频| 久草手机在线视频| 国产视频一区二区在线播放| 亚洲男人的天堂网| 一区二区三区日韩精品视频| 男女啪啪在线观看| 久久91亚洲精品中文字幕奶水| 国产精品资源在线观看| 免费日韩在线视频| 亚洲免费影视第一页| 国内不卡的二区三区中文字幕| 美女网站一区| 51自拍视频在线观看| 涩涩视频网站| 亚欧洲精品视频| av中文在线资源库| 成人日韩在线视频|