麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

用HAWQ輕松取代傳統數據倉庫(五) —— 連接管理

2024-07-21 02:52:12
字體:
來源:轉載
供稿:網友
        服務器啟動后,還要經過一系列配置,才能被客戶端程序所連接。本篇說明如何配置客戶端身份認證,HAWQ的權限管理機制,HAWQ最常用的命令行客戶端工具psql及與MySQL命令行常用命令類比,最后還將列舉一些客戶端連接HAWQ數據庫的常見問題排查。一、配置客戶端身份認證        上一篇曾經提到,HAWQ系統初始安裝后,數據庫包含一個預定義的超級用戶。這個用戶和安裝HAWQ的操作系統用戶用戶具有相同的名字,叫做gpadmin。缺省時,系統只允許使用gpadmin用戶從本地連接至數據庫。為了允許任何其它用戶從本地或遠程主機連接數據庫,需要配置HAWQ允許此類連接。1. 配置允許連接至HAWQ        HAWQ脫胎于PostgreSQL,它的客戶端訪問與認證,是由標準的PostgreSQL基于主機的認證文件 — pg_hba.conf所控制。master和每個segment的數據目錄下都存在一個pg_hba.conf文件。在HAWQ中,master實例的pg_hba.conf文件控制客戶端對HAWQ系統的訪問和認證。而segment的pg_hba.conf文件,作用只是允許每個segment作為master節點主機的客戶端連接數據庫,而segment本身并不接受其它客戶端的連接。正因如此,不要修改segment實例的pg_hba.conf文件。        pg_hba.conf的格式是普通文本,其中每行一條記錄,表示一個認證條目,HAWQ忽略空行和任何#注釋字符后面的文本。一行記錄由四個或五個以空格或tab符分隔的字段。如果字段值中包含空格,則需要用雙引號引起來,并且記錄不能跨行。與MySQL類似,HAWQ也接受TCP連接和本地的UNIX套接字連接。        每個TCP連接客戶端的訪問認證記錄具有以下格式:
host|hostssl|hostnossl   <database>   <role>   <CIDR-address>|<ip-address>,<IP-mask>   <authentication-method>        本地UNIX域套接字的訪問記錄具有下面的格式:
local   <database>   <role>   <authentication-method>        表1描述了每個字段的含義。

字段

描述

local

匹配使用UNIX域套接字的連接請求。如果沒有此種類型的記錄,則不允許UNIX域套接字連接。

host

匹配使用TCP/IP的連接請求。除非在服務器啟動時使用了適當的listen_addresses服務器配置參數(缺省值為“*”,允許所有IP連接),否則不能遠程TCP/IP連接。

hostssl

匹配使用TCP/IP的連接請求,但是僅當連接使用SSL加密時。服務器啟動時必須通過設置ssl配置參數啟用SSL。

hostnossl

匹配不使用SSL的TCP/IP的連接請求。

<database>

指定匹配此行記錄的數據庫名。值“all”指示匹配所有數據庫。多個數據庫名用逗號分隔。可以指定一個包含數據庫名的文件,在文件名前加“@”。

<role>

指定匹配此行記錄的數據庫角色名。值“all”指示匹配所有角色。如果指定的角色是一個組并且希望包含所有的組成員,在角色名前面加一個“+”。多個角色名可以通過逗號分隔。可以指定一個包含角色名的文件,在文件名前加“@”。

<CIDR-address>

指定此行記錄匹配的客戶端主機的IP地址范圍。它包含一個以標準點分十進制記法表示的IP地址,和一個CIDR掩碼長度。IP地址只能用數字表示,不能是域或主機名。掩碼長度標識客戶端IP地址必須匹配的高位數。在IP地址、斜杠和CIDR掩碼長度之間不能有空格。CIDR地址典型的例子有,單一主機如192.0.2.2/32,小型網絡如192.0.2.0/24,大型網絡如192.0.0.0/16。指定單一主機時,IPv4的CIDR掩碼是32,Ipv6的是128。網絡地址不要省略尾部的零。

<IP-address>,

<IP-mask>

這個字段是CIDR-address表示法的另一個替代表示方法。用不同列表示的掩碼替換掩碼長度。例如,255.255.255.255對應的CIDR掩碼長度是32。此字段應用于host、hostssl和hostnossl記錄。

<authentication-method>

指定連接認證時使用的方法。HAWQ支持PostgreSQL 9.0所支持的認證方法(Trust、PassWord、GSSAPI、SSPI、Kerberos、Ident-based、LDAP、RADIUS、Certificate、PAM)。

表1(1)配置pg_hba.conf文件        這個例子顯示如何編輯master的pg_hba.conf文件,以允許遠程客戶端使用加密口令認證,用所有角色訪問所有數據庫。        注意:對于更高安全要求的系統,應考慮從master的pg_hba.conf文件中刪除所有信任認證方式(Trust)的連接。信任方式意味著角色被授予訪問權限而不需要任何認證,因此會繞過所有安全檢查。        編輯pg_hba.conf從hawq-site.xml文件的hawq_master_directory屬性獲得master數據目錄的位置,并使用文本編輯器打開此目錄下的pg_hba.conf文件。在該文件中,為允許的每個連接增加一行。記錄是順序讀取的,因此記錄的順序至關重要。例如圖1:圖1保存并關閉文件。執行下面的命令重載pg_hba.conf文件的配置,使修改生效:hawq stop cluster -u -M fast(2)限制并發連接        HAWQ的某些資源分配是以連接為基礎的,因此推薦配置允許的最大連接數。為了限制HAWQ系統的并發會話數量,可以配置master的max_connections服務器配置參數,或者segment的seg_max_connections服務器配置參數。這些參數是本地參數,因此必須在所有HAWQ實例的hawq-site.xml文件中進行設置。        如果設置了max_connections,必須也要設置其依賴參數max_PRepared_transactions。該參數值必須大于等于max_connections的值,并且所有HAWQ實例要配置相同的值。下面是一個$GPHOME/etc/hawq-site.xml配置示例:
<property>    <name>max_connections</name>    <value>500</value></property><property>    <name>max_prepared_transactions</name>    <value>1000</value></property><property>    <name>seg_max_connections</name>    <value>3000</value></property>        增加這些值會引起HAWQ需要更多的共享內存。為了緩解內存使用壓力,可以考慮降低其它內存相關的服務器配置參數,如gp_cached_segworkers_threshold等。        不需要手工編輯每個節點的hawq-site.xml文件設置允許的連接數。可以使用Ambari或命令行配置這些參數。        使用Ambari:通過HAWQ service Configs > Advanced > Custom hawq-site > Add Property ... 配置max_connections、seg_max_connections和 max_prepared_transactions屬性。選擇Service Actions > Restart All重載更新的配置。        使用命令行:作為管理員登錄HAWQ的master節點并設置環境:
source /usr/local/hawq/greenplum_path.sh使用hawq config應用程序設置max_connections、seg_max_connections和max_prepared_transactions參數值,max_prepared_transactions的值必須大于等于max_connections。。例如: 
$ hawq config -c max_connections -v 100$ hawq config -c seg_max_connections -v 640$ hawq config -c max_prepared_transactions -v 200重啟HAWQ集群重載新的配置值。
$ hawq restart cluster使用hawq config的-s選項顯示服務器配置參數的值,確認配置生效:
$ hawq config -s max_connections$ hawq config -s seg_max_connections二、管理角色與權限1. HAWQ角色與權限概述        pg_hba.conf文件限定了允許連接HAWQ的客戶端主機、用戶名、訪問的數據庫,認證方式等。用戶名、口令,以及用戶對數據庫對象的使用權限保存在HAWQ的元數據表中(pg_authid、pg_roles、pg_class等)。        HAWQ采用基于角色的訪問控制機制,通過角色機制,簡化了用戶和權限的關聯性。HAWQ系統中的權限分為兩種:系統權限和對象權限。系統權限是指系統規定用戶使用數據庫的權限,如連接數據庫、創建數據庫、創建用戶等。對象權限是指在表、序列、函數等數據庫對象上執行特殊動作的權限,其權限類型有select、insert、update、delete、references、trigger、create、connect、temporary、execute和usage等。        與Oracle、SQLServer等數據庫中角色的概念不同,這些系統中的所謂角色,是權限的組合和抽象,創建角色最主要的目的是簡化對用戶的授權。舉一個簡單的例子,假設需要給五個用戶每個授予相同的五種權限,如果沒有角色,需要授權二十五次,而如果把五種權限定義成一種角色,只需要先進行一次角色定義,再授權五次即可。        然而HAWQ中的角色既可以代表一個數據庫用戶,又可以代表一組權限。而角色所擁有的預定義的系統權限是通過角色的屬性實現的。角色可以是數據庫對象(例如表)的屬主,也可以給其它角色賦予訪問這些對象的權限。角色可以是其它角色的成員,因此一個成員角色可以從其父角色繼承對象權限。        HAWQ系統可能包含多個數據庫角色(用戶或組)。這些角色并不是運行服務器上操作系統的用戶和組。但是為方便起見,可能希望維護操作系統用戶名和HAWQ角色名的關系,因為很多客戶端應用程序,如psql,使用當前操作系統用戶名作為缺省的角色,gpadmin就以最典型的例子。        用戶通過master實例連接HAWQ,mater通過pg_hba.conf里的條目驗證用戶的角色和訪問權限。之后master以當前登錄的角色,從后臺向segment實例發布SQL命令。系統級定義的角色對系統中所有數據庫都是有效的。為了創建更多的角色,首先需要使用超級用戶gpadmin連接HAWQ。2. 角色和權限的安全最佳實踐保證gpadmin系統用戶安全。HAWQ需要一個UNIX用戶ID安裝和初始化HAWQ系統。這個系統用戶ID在HAWQ文檔中被稱為gpadmin。gpadmin用戶是HAWQ中缺省的數據庫超級用戶,也是HAWQ安裝及其底層數據文件的文件系統屬主。這個缺省的管理員賬號是HAWQ的基礎設計。缺了這個用戶系統無法運行。并且,沒有方法能夠限制gpadmin用戶對數據庫的訪問。應該只使用gpadmin賬號執行諸如擴容和升級之類的系統維護任務。任何以這個用戶登錄HAWQ主機的人,都可以讀取、修改和刪除任何數據,尤其是系統目錄數據和數據庫訪問權力。因此,gpadmin用戶的安全非常重要,僅應該提供給關鍵的系統管理員使用。應用的數據庫用戶應該永不作為gpadmin登錄,ETL或者生產環境的應用程序也不應該以gpadmin用戶連接數據庫。賦予每個登錄用戶不同的角色。出于記錄和審核目的,每個登錄HAWQ的用戶都應該被賦予自己的數據庫角色。對于應用程序或者web服務,最好為每個應用或服務創建不同的角色。使用組管理訪問權限。限制具有超級用戶角色屬性的用戶。超級用戶角色繞過HAWQ中所有的訪問權限檢查和資源隊列,所以只應該將超級用戶權限授予系統管理員。3. 創建角色(用戶)        此時的角色指的是一個可以登錄到數據庫,并開啟一個數據庫會話的用戶。使用create role命令創建一個角色時,必須授予login系統屬性(功能類似于Oracle的connect角色),使得該角色可以連接數據庫。例如:
create role jsmith with login;        一個數據庫角色有很多屬性,用以定義該角色可以在數據庫中執行的任務類型,或者具有的系統權限。表2描述了有效的角色屬性。

屬性

描述

SUPERUSER | NOSUPERUSER

確定一個角色是否是超級用戶。只有超級用戶才能創建新的超級用戶。缺省值為NOSUPERUSER。

CREATEDB | NOCREATEDB

確定角色是否被允許創建數據庫。缺省值為NOCREATEDB。

CREATEROLE | NOCREATEROLE

確定角色是否被允許創建和管理其它角色。缺省值為NOCREATEROLE。

INHERIT | NOINHERIT

確定角色是否從其所在的組繼承權限。具有INHERIT屬性的角色可以自動使用所屬組已經被授予的數據庫權限,無論角色是組的直接成員還是間接成員。缺省值為INHERIT。

LOGIN | NOLOGIN

確定角色是否可以登錄。具有LOGIN屬性的角色可以將角色作為用戶登錄。沒有此屬性的角色被用于管理數據庫權限(即用戶組)。缺省值為NOLOGIN。

CONNECTION LIMIT connlimit

如果角色能夠登錄,此屬性指定角色可以建立多少個并發連接。缺省值為-1,表示沒有限制。

PASSWORD ’password

設置角色的口令。如果不準備使用口令認證,可以忽略此選項。如果沒有指定口令,口令將被設置為null,此時該用戶的口令認證總是失敗。一個null口令也可以顯示的寫成PASSWORD NULL。

ENCRYPTED | UNENCRYPTED

控制口令是否加密存儲在系統目錄中。行為由password_encryption配置參數所決定,缺省的設置是md5,如果要改為SHA-256加密,設置此參數為password。如果給出的口令字符串已經是加密格式,那么它被原樣存儲,而不管指定ENCRYPTED還是UNENCRYPTED(因為系統不能對加密的口令字符串進行解密)。這種設計允許在dump/restore時重新導入加密的口令。

VALID UNTIL ’timestamp

設置一個日期和時間,在該時間點后角色的口令失效。如果忽略此選項,口令將永久有效。

RESOURCE QUEUE queue_name

賦予角色一個命名的資源隊列用于負載管理。角色發出的任何語句都受到該資源隊列的限制。注意,這個RESOURCE QUEUE屬性不會被繼承,必須在每個用戶級(登錄)角色設置。

 DENY {deny_interval | deny_point}

在此時間區間內禁止訪問。指定天或者天和時間。

表2可以在創建角色時,或者創建角色后使用alter role命令指定這些屬性。例如:
alter role jsmith with password 'passwd123';alter role admin valid until 'infinity';alter role jsmith login;alter role jsmith resource queue adhoc;alter role jsmith deny day 'sunday';4. 角色成員        通常將多個權限合成一組,能夠簡化對權限的管理。使用這種方法,對于一個組中的用戶,其權限可以被整體授予和回收。在HAWQ中的實現方式為,創建一個表示組的角色,然后為用戶角色授予組角色的成員。        下面的SQL命令使用create role創建一個名為admin組角色,該組角色具有createrole和createdb系統權限。
create role admin createrole createdb;        一旦組角色存在,就可以使用grant和revoke命令添加或刪除組成員(用戶角色)。例如:
grant admin to john, sally;revoke admin from bob;        為了簡化對象權限的管理,應當只為組級別的角色授予適當的權限。成員用戶角色繼承組角色的對象權限。例如:
grant all on table mytable to admin;grant all on schema myschema to admin;grant all on database mydb to admin;        角色屬性LOGIN、SUPERUSER、CREATEDB和CREATEROLE不會當做普通的數據庫對象權限被繼承。為了讓用戶成員使用這些屬性,必須執行SET ROLE指定一個具有這些屬性的角色。在上面的例子中,我們已經為admin指定了CREATEDB和CREATEROLE屬性。sally是admin的成員,當以sally連接到數據庫后,執行以下命令,使sally可以擁有父角色的CREATEDB和CREATEROLE屬性。
set role admin;        有關角色屬性信息可以在系統表pg_authid中找到,pg_roles是基于系統表pg_authid的視圖。系統表pa_auth_members存儲了角色之間的成員關系。5. 管理對象權限        當一個對象(表、視圖、序列、數據庫、函數、語言、模式或表空間)被創建,它的權限被賦予屬主。屬主通常是執行create語句的角色。對于大多數類型的對象,其初始狀態是只允許屬主或超級用戶在對象上做任何操作。為了允許其它角色使用對象,必須授予適當的權限。HAWQ對每種對象類型支持的權限如表3所示。

對象類型

權限

Tables、Views、Sequences

SELECT、INSERT、RULE、ALL

External Tables

SELECT、RULE、ALL

Databases

CONNECT、CREATE、TEMPORARY | TEMP、ALL

Functions

EXECUTE

Procedural Languages

USAGE

Schemas

CREATE、USAGE、ALL

Custom Protocol

SELECT、INSERT、RULE、ALL

表3        注意:必須為每個對象單獨授權。例如,授予數據庫上的ALL權限,并不會授予數據庫中全部對象的訪問權限,而只是授予了該數據庫自身的數據庫級別的全部權限(CONNECT、CREATE、TEMPORARY)。        使用grant SQL語句為一個角色授予一個對象權限。例如:
grant insert on mytable to jsmith;        使用revoke命令回收權限。例如:
revoke all privileges on mytable from jsmith;        也可以使用drop owned和reassign owned命令為一個角色刪除或重新賦予對象屬主權限。只有對象的屬主或超級用戶可以刪除或重新賦予對象的屬主權限。例如:
reassign owned by sally to bob;drop owned by visitor;

        HAWQ不支持行級和列級的訪問控制,但是可以使用視圖限制查詢的行或列,模擬行級和列級訪問控制。此時角色被授予對視圖而不是基表的訪問權限。

        對象權限,存儲在pg_class.relacl中,更多對象權限的信息,可以參考”PostgreSQL 表和列權限(ACL)解讀“

6. 口令加密        HAWQ缺省使用MD5為用戶口令加密,通過適當配置服務器參數,也能實現口令的SHA-256加密存儲。為了使用SHA-256加密,客戶端認證方法必須設置為password而不是缺省的MD5。口令雖然以加密形式存儲在系統表中,但仍然以明文在網絡間傳遞。為了避免這種情況,應該建立客戶端與服務器之間的SSL加密通道。(1)系統級啟用SHA-256加密        如果使用Ambari管理HAWQ集群:通過HAWQ service Configs > Advanced > Custom hawq-site下拉列表設置password_hash_algorithm配置屬性,有效值為SHA-256。選擇Service Actions > Restart All重載更新的配置。        如果從命令行管理HAWQ集群:作為管理員登錄HAWQ master并設置路徑:
$ source /usr/local/hawq/greenplum_path.sh使用hawq config應用程序設置password_hash_algorithm為SHA-256:
$ hawq config -c password_hash_algorithm -v 'SHA-256' 重載HAWQ配置:
$ hawq stop cluster -u驗證設置:
$ hawq config -s password_hash_algorithm(2)會話級啟用SHA-256加密        為單個數據庫會話設置password_hash_algorithm服務器參數:以超級用戶登錄HAWQ實例。設置password_hash_algorithm參數為SHA-256:
set password_hash_algorithm = 'SHA-256';驗證參數設置:
show password_hash_algorithm;(3)驗證口令加密方式生效        建立一個具有login權限的新角色,并設置口令:
create role testdb with password 'testdb12345#' login;        修改客戶端認證方法,允許存儲SHA-256加密的口令,打開master的pg_hba.conf文件并添加下面一行:
host all testdb 0.0.0.0/0 password        重啟集群:
hawq restart cluster        以剛創建的testdb用戶登錄數據庫。
psql -d postgres -h hdp3 -U testdb        在提示時輸入正確的口令。        驗證口令被以SHA-256哈希方式存儲,哈希后的口令存儲在pg_authid.rolpasswod字段中。作為超級用戶登錄。執行下面的查詢:
select rolpassword from pg_authid where rolname = 'testdb';        查詢結果如圖2所示。圖2三、使用psql連接HAWQ        用戶可以使用與一個PostgreSQL兼容的客戶端程序連接到HAWQ,最常用的客戶端工具就是psql。再次強調,用戶和管理員總是通過master連接到HAWQ,segment不能接受客戶端連接。        為了建立一個到master的連接,需要知道表4所示的連接信息,并在psql命令行給出相應參數或配置相關的環境變量。

連接參數

描述

環境變量

應用名

連接數據庫的應用名稱。連接參數application_name中配置的缺省值是psql。

$PGAPPNAME

數據庫名

連接的數據庫名稱。對于一個新初始化的系統,首次連接使用template1數據庫。

$PGDATABASE

主機名

HAWQ master的主機名。缺省主機時localhost。

$PGhost

端口

HAWQ master實例運行的端口號。缺省是5432。

$PGPORT

用戶名

連接數據庫的用戶(角色)名稱。與操作系統用戶名相同的用戶名不需要此參數。注意,每個HAWQ系統都有一個在初始化時自動創建的超級用戶賬號。這個賬號與初始化HAWQ系統的操作系統用戶同名(典型地是gpadmin)。

$PGUSER

表4        下面的例子顯示如何通過psql訪問一個數據庫,沒有指定的連接參數依賴于設置的環境變量或使用缺省值。
psql -d mytest -h hdp3 -p 5432 -U `gpadmin`psql mytestpsql        如果一個用戶定義的數據庫還沒有創建,可以通過連接template1數據庫訪問系統。例如:
psql template1        連接數據庫后,psql提供一個由當前連接的數據庫名后跟=>構成的提示符(超級用戶是=#)。例如:
mytest=>        在提示符下,可以鍵入SQL命令。一個SQL命令必須以;(分號)結束,以發送到訴服務器執行。例如:
select * from mytable;        psql常用命令與mysql命令行的比較如表5所示。

功能描述

psql

mysql

聯機幫助

help:簡要幫助

/?:psql命令幫助

/h:SQL命令幫助

help、?、/?、/h:都是等價的簡要幫助。后面可以跟SQL命令,顯示詳細的命令語法

執行SQL

分號或/g

分號、/g或/G

退出

/q

/q、exit或quit

列出所有數據庫

/l

show databases;

改變當前連接的數據庫

/c DBNAME

use db_name;

列出內部表

/dt

show tables;

列出外部表

/dx

表的描述

/d NAME

desc tbl_name;

列出索引

目前不支持索引

show index from tbl_name;

列出視圖

/dv

show tables;

列出序列

/ds

列出系統表

/dtS+

show tables from mysql;

show tables from information_schema;

show tables from performance_schema;

表5四、連接常見問題        很多問題會引起客戶端應用連接HAWQ失敗。表6是HAWQ提供的造成連接問題的常見原因及其排查方法。

問題

解決方案

No pg_hba.conf entry for host or user

為了讓HAWQ接受遠程客戶端連接,必須配置HAWQ的master實例上配置位于master實例數據目錄下的pg_hba.conf文件,在該文件中增加適當的條目,允許客戶端主機和數據庫用戶連接到HAWQ。

HAWQ is not running

如果HAWQ master實例宕機,用戶將不能連接。可以在HAWQ master上運行hawq state應用程序,驗證HAWQ系統正在運行。

Network problem

Interconnect timeouts

當用戶從遠程客戶端連接到HAWQ master時,網絡問題可能阻止連接,例如,DNS主機名解析問題,主機系統斷網等等。為了確認不是網絡問題,從遠程客戶端所在主機連接HAWQ master所在主機。例如:ping hostname。

如果系統不能解析HAWQ主機IP地址所涉及的主機名,查詢和連接將失敗。有些操作使用localhost進行連接,而另一些操作使用實際的主機名,所以兩種情況都必須能正確解析。如果碰到連接錯誤,首先核實能夠從HAWQ master所在主機連接到集群主機。在master和所有段的/etc/hosts文件中,確認有HAWQ集群中所有主機的正確的主機名和IP地址。127.0.0.1必須被解析成localhost。

Too many clients already

缺省時,HAWQ master和segment允許的最大并發連接數分別是200和1280。超出此限制的連接將被拒絕。這個限制由master實例的max_connections參數和segment實例的seg_max_connections參數所控制。如果修改了master的設置,也必須在segment節點上做適當的修改。

Query failure

HAWQ集群網絡中必須配置DNS反向解析。如果DNS反向解析沒有配置,失敗的查詢將在HAWQ master的日志文件中產生“Failed to reverse DNS lookup for ip <ip-address>”警告消息。

表6
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩视频www| 久久999久久 | 久久久久久久久久久综合 | 欧美成人一区免费视频 | 天堂成人一区二区三区 | 龙床上的呻吟高h | 精品一区二区三区免费毛片爱 | 午夜视频在线观看91 | 国产成人精品无人区一区 | 色97色| 久久最新免费视频 | 干色视频 | 色播av在线| 99成人在线 | www.91sp | 亚洲国产精品一区二区久久 | 欧美一级做一级爱a做片性 91在线视频观看 | 91精品国产乱码久久桃 | 精品在线观看一区 | 精国品产一区二区三区有限公司 | 天天色人人爱 | 国产成人自拍av | 免费毛片视频播放 | 88xx成人精品视频 | 欧美在线中文字幕 | 亚洲精中文字幕二区三区 | 久久久99精品视频 | 亚洲成人在线视频网站 | 亚洲一区二区三区四区精品 | 91成人免费视频 | 鲁久久| 国产在线观看91精品 | 久久2019中文字幕 | 日韩做爰视频免费 | lutube成人福利在线观看 | 日韩电影av在线 | 中文字幕h | 欧美乱论 | 97中文| 一区二区视 | 国产亚洲精品久久久久久久久久 |