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

首頁 > 數據庫 > MySQL > 正文

MySQL用戶賬戶管理和權限管理深入講解

2024-07-25 19:09:22
字體:
來源:轉載
供稿:網友

前言

MySQL 的權限表在數據庫啟動的時候就載入內存,當用戶通過身份認證后,就在內存中進行相應權限的存取,這樣,此用戶就可以在數據庫中做權限范圍內的各種操作了。

下面話不多說了,來一起看看詳細的介紹吧

mysql 的權限體系大致分為5個層級:

全局層級

全局權限適用于一個給定服務器中的所有數據庫。這些權限存儲在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤銷全局權限。

數據庫層級

數據庫權限適用于一個給定數據庫中的所有目標。這些權限存儲在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤銷數據庫權限。

表層級

表權限適用于一個給定表中的所有列。這些權限存儲在mysql.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤銷表權限。

列層級

列權限適用于一個給定表中的單一列。這些權限存儲在mysql.columns_priv表中。當使用REVOKE時,您必須指定與被授權列相同的列。

子程序層級

CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT權限適用于已存儲的子程序。這些權限可以被授予為全局層級和數據庫層級。而且,除了CREATE ROUTINE外,這些權限可以被授予為子程序層級,并存儲在mysql.procs_priv表中。

這些權限信息存儲在下面的系統表中:

mysql.user
mysql.db
mysql.host
mysql.table_priv
mysql.column_priv

當用戶連接進來,mysqld會通過上面的這些表對用戶權限進行驗證!

一、權限表的存取

在權限存取的兩個過程中,系統會用到 “mysql” 數據庫(安裝 MySQL 時被創建,數據庫名稱叫“mysql”) 中 user、host 和 db 這3個最重要的權限表。

在這 3 個表中,最重要的表示 user 表,其次是 db 表,host 表在大多數情況下并不使用。

user 中的列主要分為 4 個部分:用戶列、權限列、安全列和資源控制列。

通常用的最多的是用戶列和權限列,其中權限列又分為普通權限和管理權限。普通權限用于數據庫的操作,比如 select_priv、super_priv 等。

當用戶進行連接時,權限表的存取過程有以下兩個過程:

先從 user 表中的 host、user 和 password 這 3 個字段中判斷連接的 IP、用戶名、和密碼是否存在于表中,如果存在,則通過身份驗證,否則拒絕連接。

如果通過身份驗證、則按照以下權限表的順序得到數據庫權限:user -> db -> tables_priv -> columns_priv。

在這幾個權限表中,權限范圍依次遞減,全局權限覆蓋局部權限。上面的第一階段好理解,下面以一個例子來詳細解釋一下第二階段。

為了方便測試,需要修改變量 sql_mode,不然會報錯,如下

MySQL [(none)]> grant select on *.* to xxx@localhost;ERROR 1133 (42000): Can't find any matching row in the user tableMySQL [(none)]> SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';Query OK, 0 rows affected, 2 warnings (0.07 sec)MySQL [(none)]> grant select on *.* to xxx@localhost;Query OK, 0 rows affected, 2 warnings (0.10 sec)
// sql_mode 默認值中有 NO_AUTO_CREATE_USER (防止GRANT自動創建新用戶,除非還指定了密碼)SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';

1. 創建用戶

xxx@localhost,并賦予所有數據庫上的所有表的 select 權限

先查看user表顯示的權限狀態

MySQL [mysql]> select * from user where user="xxx" and host='localhost' /G;*************************** 1. row ***************************Host: localhostUser: xxxSelect_priv: YInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NReload_priv: NShutdown_priv: NProcess_priv: NFile_priv: NGrant_priv: NReferences_priv: NIndex_priv: NAlter_priv: NShow_db_priv: NSuper_priv: NCreate_tmp_table_priv: NLock_tables_priv: NExecute_priv: NRepl_slave_priv: NRepl_client_priv: NCreate_view_priv: NShow_view_priv: NCreate_routine_priv: NAlter_routine_priv: NCreate_user_priv: NEvent_priv: NTrigger_priv: NCreate_tablespace_priv: Nssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: password_expired: Npassword_last_changed: 2018-12-03 17:34:49password_lifetime: NULLaccount_locked: N

再查看db表的權限狀態

MySQL [mysql]> select * from db where user="xxx" and host='localhost' /G;Empty set (0.03 sec)

可以發現user表中Select_priv: Y,其他均為N

DB表中則無記錄

也就是說,對所有數據庫都具有相同的權限的用戶并不需要記錄到 db 表,而僅僅需要將 user 表中的 select_priv 改為 “Y” 即可。換句話說,user 表中的每個權限都代表了對所有數據庫都有權限。

2. 將 xxx@localhost 上的權限改為只對 db1 數據庫上所有表的 select 權限。

MySQL [mysql]> create database db1;Query OK, 1 row affected (0.01 sec)MySQL [mysql]> re^CMySQL [mysql]> revoke select on *.* from xxx@localhost;Query OK, 0 rows affected, 1 warning (0.06 sec)MySQL [mysql]> grant select on db1.* to xxx@localhost;Query OK, 0 rows affected, 1 warning (0.09 sec)MySQL [mysql]> select * from user where user='xxx'/G;*************************** 1. row ***************************Host: localhostUser: xxxSelect_priv: NInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NReload_priv: N
MySQL [mysql]> select * from db where user='xxx'/G;*************************** 1. row ***************************Host: localhostDb: db1User: xxxSelect_priv: YInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NGrant_priv: NReferences_priv: NIndex_priv: NAlter_priv: NCreate_tmp_table_priv: NLock_tables_priv: NCreate_view_priv: NShow_view_priv: NCreate_routine_priv: NAlter_routine_priv: NExecute_priv: NEvent_priv: NTrigger_priv: N

這時候發現,user 表中的 select_priv 變為 “N” ,而 db 表中增加了 db 為 xxx 的一條記錄。也就是說,當只授予部分數據庫某些權限時,user 表中的相應權限列保持 “N”,而將具體的數據庫權限寫入 db 表。table 和 column 的權限機制和 db 類似。

3. tables_priv記錄表權限

MySQL [db1]> create table t1(id int(10),name char(10));Query OK, 0 rows affected (0.83 sec)MySQL [db1]> grant select on db1.t1 to mmm@localhost;Query OK, 0 rows affected, 2 warnings (0.06 sec)MySQL [mysql]> select * from user where user='mmm'/G;*************************** 1. row ***************************Host: localhostUser: mmmSelect_priv: NInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NReload_priv: N...MySQL [mysql]> select * from db where user='mmm'/G;Empty set (0.00 sec)MySQL [mysql]> select * from tables_priv where user='mmm'/G;*************************** 1. row ***************************Host: localhostDb: db1User: mmmTable_name: t1Grantor: root@localhostTimestamp: 0000-00-00 00:00:00Table_priv: SelectColumn_priv: 1 row in set (0.00 sec)ERROR: No query specifiedMySQL [mysql]> select * from columns_priv where user='mmm'/G;Empty set (0.00 sec)

可以看見tables_priv表中增加了一條記錄,而在user db columns_priv三個表中沒有記錄

從上例可以看出,當用戶通過權限認證,進行權限分配時,將按照 ==user -> db -> tables_priv -> columns_priv== 的順序進行權限分配,即先檢查全局權限表 user,如果 user 中對應 權限為 “Y”,則此用戶對所有數據庫的權限都為“Y”,將不再檢查 db、tables_priv 和 columns_priv;如果為“N”,則到 db 表中檢查此用戶對應的具體數據庫,并得到 db 中為 “Y”的權限;如果 db 中相應權限為 “N”,則再依次檢查tables_priv 和 columns_priv 中的權限,如果所有的都為“N”,則判斷為不具備權限。

二. 賬戶管理

授權 grant

grant不僅可以用來授權,還可以用來創建用戶。

授權的語法:

grant 權限列表 on 庫名.表名 to 用戶@主機 identified by '密碼';

創建用戶 p1 ,權限為可以在所有數據庫上執行所有權限,只能從本地進行連接

MySQL [mysql]> grant all privileges on *.* to p1@localhost;Query OK, 0 rows affected, 2 warnings (0.03 sec)MySQL [mysql]> select * from user where user='p1'/G*************************** 1. row ***************************Host: localhostUser: p1Select_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: YGrant_priv: NReferences_priv: YIndex_priv: YAlter_priv: YShow_db_priv: YSuper_priv: YCreate_tmp_table_priv: YLock_tables_priv: YExecute_priv: YRepl_slave_priv: YRepl_client_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: YCreate_user_priv: YEvent_priv: YTrigger_priv: YCreate_tablespace_priv: Yssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: password_expired: Npassword_last_changed: 2018-12-03 18:11:01password_lifetime: NULLaccount_locked: N1 row in set (0.00 sec)

除了 grant_priv 權限外,所有權限在user 表里面都是 “Y”。

增加對 p1 的 grant 權限

MySQL [mysql]> grant all privileges on *.* to p1@localhost with grant option;Query OK, 0 rows affected, 1 warning (0.03 sec)MySQL [mysql]> select * from user where user='p1'/G*************************** 1. row ***************************Host: localhostUser: p1Select_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: YGrant_priv: YReferences_priv: YIndex_priv: YAlter_priv: YShow_db_priv: YSuper_priv: YCreate_tmp_table_priv: YLock_tables_priv: YExecute_priv: YRepl_slave_priv: YRepl_client_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: YCreate_user_priv: YEvent_priv: YTrigger_priv: YCreate_tablespace_priv: Yssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: password_expired: Npassword_last_changed: 2018-12-03 18:11:01password_lifetime: NULLaccount_locked: N1 row in set (0.00 sec)

設置密碼賦予grant權限

MySQL [mysql]> grant all privileges on *.* to p1@localhost identified by '123' with grant option;Query OK, 0 rows affected, 2 warnings (0.01 sec)MySQL [mysql]> select * from user where user='p1'/G*************************** 1. row ***************************Host: localhostUser: p1Select_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: YGrant_priv: YReferences_priv: YIndex_priv: YAlter_priv: YShow_db_priv: YSuper_priv: YCreate_tmp_table_priv: YLock_tables_priv: YExecute_priv: YRepl_slave_priv: YRepl_client_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: YCreate_user_priv: YEvent_priv: YTrigger_priv: YCreate_tablespace_priv: Yssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257password_expired: Npassword_last_changed: 2018-12-03 18:14:40password_lifetime: NULLaccount_locked: N1 row in set (0.00 sec)

在5.7版本后的數據庫,密碼字段改為authentication_string

創建新用戶 p2,可以從任何 IP 連接,權限為對 db1 數據庫里的所有表進行 select 、update、insert 和 delete 操作,初始密碼為“123”

MySQL [mysql]> grant select,insert,update,delete on db1.* to 'p2'@'%' identified by '123';Query OK, 0 rows affected, 1 warning (0.01 sec)MySQL [mysql]> select * from user where user='p2'/G;*************************** 1. row ***************************Host: %User: p2Select_priv: NInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NReload_priv: NShutdown_priv: N...Create_tablespace_priv: Nssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: *23AE809DDACAF96AF0FD78ED04B6A265E05AA257password_expired: Npassword_last_changed: 2018-12-03 18:20:44password_lifetime: NULLaccount_locked: N1 row in set (0.00 sec)ERROR: No query specifiedMySQL [mysql]> select * from db where user='p2'/G;*************************** 1. row ***************************Host: %Db: db1User: p2Select_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: NDrop_priv: NGrant_priv: NReferences_priv: NIndex_priv: NAlter_priv: NCreate_tmp_table_priv: NLock_tables_priv: NCreate_view_priv: NShow_view_priv: NCreate_routine_priv: NAlter_routine_priv: NExecute_priv: NEvent_priv: NTrigger_priv: N1 row in set (0.00 sec)

user 表中的權限都是“N”,db 表中增加的記錄權限則都是“Y”,這樣只授予用戶適當的權限,而不會授予過多的權限。

本例中的 IP 限制為所有 IP 都可以連接,因此設置為 “%”,mysql 數據庫中是通過 user 表的 host 字段來進行控制,host 可以是以下類型的賦值。

注意: mysql 數據庫的 user 表中 host 的值為 “%” 或者空,表示所有外部 IP 都可以連接,但是不包括本地服務器 localhost,因此,如果要包括本地服務器,必須單獨為 localhost 賦予權限。

授予 super、process、file 權限給用戶 p3@%

MySQL [mysql]> grant super,process,file on db1.* to 'p3'@'%';ERROR 1221 (HY000): Incorrect usage of DB GRANT and GLOBAL PRIVILEGESMySQL [mysql]> grant super,process,file on *.* to 'p3'@'%';Query OK, 0 rows affected (0.03 sec)

這幾個權限都是屬于管理權限,因此不能夠指定某個數據庫,on 后面必須跟 *.*,否則會提示錯誤,如上

那這幾個權限是干啥的?

process通過這個權限,用戶可以執行SHOW PROCESSLIST和KILL命令。默認情況下,每個用戶都可以執行SHOW PROCESSLIST命令,但是只能查詢本用戶的進程。

擁有file權限才可以執行 select ..into outfile和load data infile…操作,但是不要把file, process, super權限授予管理員以外的賬號,這樣存在嚴重的安全隱患。

super這個權限允許用戶終止任何查詢;修改全局變量的SET語句;使用CHANGE MASTER,PURGE MASTER LOGS

另外一個比較特殊的

usage權限

連接(登陸)權限,建立一個用戶,就會自動授予其usage權限(默認授予)。

該權限只能用于數據庫登陸,不能執行任何操作;且usage權限不能被回收,也即``REVOKE用戶并不能刪除用戶。

查看賬號權限

賬號創建好后,可以通過如下命令查看權限:

show grants for user@host;MySQL [mysql]> show grants for p2@'%';+-------------------------------------------------------------+| Grants for p2@% |+-------------------------------------------------------------+| GRANT USAGE ON *.* TO 'p2'@'%' || GRANT SELECT, INSERT, UPDATE, DELETE ON `db1`.* TO 'p2'@'%' |+-------------------------------------------------------------+2 rows in set (0.00 sec)

更改賬戶權限

創建用戶賬號p4,權限為對db1所有表具有select權限

MySQL [mysql]> grant select on db1.* to p4@'%';Query OK, 0 rows affected, 1 warning (0.01 sec)MySQL [mysql]> show grants for p4@'%';+-------------------------------------+| Grants for p4@% |+-------------------------------------+| GRANT USAGE ON *.* TO 'p4'@'%' || GRANT SELECT ON `db1`.* TO 'p4'@'%' |+-------------------------------------+2 rows in set (0.00 sec)

增加delete權限

MySQL [mysql]> grant delete on db1.* to p4@'%';Query OK, 0 rows affected (0.01 sec)MySQL [mysql]> show grants for p4@'%';+---------------------------------------------+| Grants for p4@% |+---------------------------------------------+| GRANT USAGE ON *.* TO 'p4'@'%' || GRANT SELECT, DELETE ON `db1`.* TO 'p4'@'%' |+---------------------------------------------+2 rows in set (0.00 sec)

和已有的 select 權限進行合并

刪除delete權限

revoke 語句可以回收已經賦予的權限

MySQL [mysql]> show grants for p4@'%';+---------------------------------------------+| Grants for p4@% |+---------------------------------------------+| GRANT USAGE ON *.* TO 'p4'@'%' || GRANT SELECT, DELETE ON `db1`.* TO 'p4'@'%' |+---------------------------------------------+2 rows in set (0.00 sec)MySQL [mysql]> revoke delete on db1.* from p4@'%';Query OK, 0 rows affected (0.01 sec)MySQL [mysql]> show grants for p4@'%';+-------------------------------------+| Grants for p4@% |+-------------------------------------+| GRANT USAGE ON *.* TO 'p4'@'%' || GRANT SELECT ON `db1`.* TO 'p4'@'%' |+-------------------------------------+2 rows in set (0.00 sec)

usage能revoke?

MySQL [mysql]> revoke select on db1.* from p4@'%';Query OK, 0 rows affected (0.02 sec)MySQL [mysql]> show grants for p4@'%';+--------------------------------+| Grants for p4@% |+--------------------------------+| GRANT USAGE ON *.* TO 'p4'@'%' |+--------------------------------+1 row in set (0.00 sec)MySQL [mysql]> revoke usage on db1.* from p4@'%';ERROR 1141 (42000): There is no such grant defined for user 'p4' on host '%'

usage 權限不能被回收,也就是說,revoke 用戶并不能刪除用戶。

要徹底的刪除賬號,可以使用 drop user

drop user p4@'%';

賬號資源限制

創建 MySQL 賬號時,還有一類選項稱為賬號資源限制,這類選項的作用是限制每個賬號實際具有的資源限制,這里的“資源”主要包括:

max_queries_per_hour count : 單個賬號每小時執行的查詢次數
max_upodates_per_hour count : 單個賬號每小時執行的更新次數
max_connections_per_hour count : 單個賬號每小時連接服務器的次數
max_user_connections count : 單個賬號并發連接服務器的次數

注意:

添加用戶或者權限,使用mysql> flush privileges; 刷新權限

具體權限可以參考官網文檔

https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类xxx| 中文字幕亚洲综合久久筱田步美| 亚洲精品动漫久久久久| 国产伦精品一区二区三区精品视频| 国产日韩欧美中文| 懂色aⅴ精品一区二区三区蜜月| 91国产一区在线| 中文字幕在线观看日韩| 2018日韩中文字幕| 国产精品日韩欧美综合| 日韩av在线网| 亚洲欧美另类自拍| 国产精品欧美日韩一区二区| 97人人模人人爽人人喊中文字| 亚洲色图日韩av| 国产免费一区二区三区在线观看| 欧美电影院免费观看| 国产精品成人播放| 亚洲综合在线中文字幕| 亚洲欧美制服综合另类| 国产成人中文字幕| 成人在线视频网站| 一区二区三区国产视频| www.日韩av.com| 欧美老女人xx| 欧美日韩精品在线观看| 欧美激情欧美激情| 亚洲欧美日韩一区在线| 欧美视频一区二区三区…| 成人免费视频在线观看超级碰| 国产亚洲精品va在线观看| 欧美视频在线视频| 欧美成人精品影院| 日韩在线欧美在线| 国产97色在线| 91精品国产综合久久香蕉| 色吧影院999| 在线成人中文字幕| 精品欧美一区二区三区| 51午夜精品视频| 欧美日韩亚洲精品一区二区三区| 色偷偷综合社区| 亚洲在线观看视频网站| 日韩亚洲欧美中文高清在线| 九九综合九九综合| 成人国产精品一区二区| 国产91成人在在线播放| 国模叶桐国产精品一区| 国产欧美日韩亚洲精品| 国产精品一区二区久久久久| 亚洲免费人成在线视频观看| 精品中文字幕乱| 久久久久久网站| 亚洲毛片在线免费观看| 国产精品丝袜高跟| 久久久久久中文字幕| 久久人人爽人人爽人人片av高清| 亚洲欧美一区二区三区久久| 国产精品av在线| 全亚洲最色的网站在线观看| 中文字幕精品www乱入免费视频| 欧美精品亚州精品| 91精品国产91久久久久福利| 亚洲综合精品一区二区| 亚洲精品国产品国语在线| 热草久综合在线| 久久精品国亚洲| 国内精品国产三级国产在线专| 国产精品极品美女在线观看免费| 国产91精品青草社区| 中文字幕在线观看亚洲| 欧美在线一区二区三区四| 欧美日韩在线一区| 1769国产精品| 亚洲免费视频在线观看| 91成人国产在线观看| 久久网福利资源网站| 日日噜噜噜夜夜爽亚洲精品| 久久人人爽亚洲精品天堂| 美女啪啪无遮挡免费久久网站| 中文字幕九色91在线| 亚洲午夜精品久久久久久久久久久久| 欧美自拍大量在线观看| 萌白酱国产一区二区| 2019亚洲日韩新视频| 亚洲精品91美女久久久久久久| 欧美剧在线观看| 国产精品中文字幕在线观看| 高跟丝袜一区二区三区| 国产国产精品人在线视| 久久久精品2019中文字幕神马| 国产97在线观看| 日韩理论片久久| 欧美日韩福利在线观看| 久久久国产视频91| 成人黄色激情网| 国产精品9999| 国产精品欧美一区二区三区奶水| 日本伊人精品一区二区三区介绍| 久久久久久久久久久人体| 8090成年在线看片午夜| 一区二区亚洲欧洲国产日韩| 精品高清美女精品国产区| 91成人在线观看国产| 理论片在线不卡免费观看| 亚洲欧美日韩图片| 日韩视频在线观看免费| 欧美性猛交xxxx免费看久久久| 国产精品高潮呻吟久久av黑人| 久久久国产91| 日韩av在线天堂网| 国产亚洲人成a一在线v站| 欧美激情欧美狂野欧美精品| 国产aⅴ夜夜欢一区二区三区| 91视频九色网站| 欧美成人免费va影院高清| 欧美性猛交xxxx乱大交| 91精品国产99久久久久久| 日本乱人伦a精品| 97香蕉超级碰碰久久免费软件| 亚洲精品国精品久久99热一| 久久久久久这里只有精品| 国内揄拍国内精品少妇国语| 欧美亚洲国产日韩2020| 久久久国产精品视频| 日韩免费在线免费观看| 久久久亚洲国产| 亚洲最新av在线| 久久久久久久999精品视频| 国产日韩在线看片| 亚洲美女视频网站| 欧美诱惑福利视频| 日韩av免费在线观看| 精品久久久91| 日韩中文字幕第一页| xxx成人少妇69| 欧美亚洲国产精品| 日韩欧美aⅴ综合网站发布| 成人精品久久久| 久久国产精品久久精品| 亚洲国产高清福利视频| 91成人国产在线观看| 黑人巨大精品欧美一区免费视频| 91中文字幕一区| 欧美成人免费在线视频| 日韩人体视频一二区| 国产精品久久国产精品99gif| 国产免费一区二区三区在线能观看| 欧美综合一区第一页| 亚洲日韩第一页| 久久高清视频免费| 91久久国产综合久久91精品网站| 欧美交受高潮1| 欧美在线性爱视频| 国内精品久久久久影院 日本资源| 国产啪精品视频网站| 久久国产精品亚洲| 精品在线观看国产| 久久最新资源网| 成人黄色免费网站在线观看| 亚洲欧美日韩天堂一区二区| 韩剧1988免费观看全集| 日韩在线中文字| 亚洲老司机av|