日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL视图用户管理

發布時間:2024/4/11 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MYSQL视图用户管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MYSQL視圖

文章目錄

    • MYSQL視圖
    • 1. 基本使用
    • 2. 視圖規則和限制
    • 用戶管理
    • 1. 用戶
    • 2. 數據庫的權限

視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。視圖的數據變化會影響到基表,基表的數據變化也會影響到視圖

1. 基本使用

  • 創建視圖
create view 視圖名 as select語句;

案例

create view v_ename_dname as select ename, dname from EMP, DEPT where EMP.deptno=DEPT.deptno; select * from v_ename_dname; +--------+------------+ | ename | dname | +--------+------------+ | CLARK | ACCOUNTING | | KING | ACCOUNTING | | MILLER | ACCOUNTING | | SMITH | RESEARCH | | JONES | RESEARCH | | SCOTT | RESEARCH | | ADAMS | RESEARCH | | FORD | RESEARCH | | ALLEN | SALES | | WARD | SALES | | MARTIN | SALES | | BLAKE | SALES | | TURNER | SALES | | JAMES | SALES | +--------+------------+
  • 修改了視圖,對基表數據有影響
update v_ename_dname set dname='sales' where ename='CLARK'; select * from EMP where ename='CLARK';
  • 修改了基表,對視圖有影響
mysql> update EMP set deptno=20 where ename='JAMES'; -- 修改基表 Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from v_ename_dname where ename='JAMES'; +-------+----------+ | ename | dname | +-------+----------+ | JAMES | RESEARCH | <== 視圖中的數據也發生了變化 +-------+----------+
  • 刪除視圖
drop view 視圖名;

2. 視圖規則和限制

  • 與表一樣,必須唯一命名(不能出現同名視圖或表名)
  • 創建視圖數目無限制,但要考慮復雜查詢創建為視圖之后的性能影響
  • 視圖不能添加索引,也不能有關聯的觸發器或者默認值
  • 視圖可以提高安全性,必須具有足夠的訪問權限
  • order by 可以用在視圖中,但是如果從該視圖檢索數據 select 中也含有 order by ,那么該視圖中的order by 將被覆蓋
  • 視圖可以和表一起使用

用戶管理

如果我們只能使用root用戶,這樣存在安全隱患。這時,就需要使用MySQL的用戶管理。

1. 用戶

1.1 用戶信息:

MySQL中的用戶,都存儲在系統數據庫mysql的user表中

mysql> select host,user,authentication_string from user; +-----------+---------------+-------------------------------------------+ | host | user | authentication_string | +-----------+---------------+-------------------------------------------+ | localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | +-----------+---------------+-------------------------------------------+

字段解釋:

  • host:表示這個用戶可以從哪個主機登陸,如果是localhost,表示只能從本機登陸
  • user:用戶名
  • authentication_string:用戶密碼通過password函數加密后的
  • *_priv:用戶擁有的權限

1.2 創建用戶:

語法:

create user '用戶名'@'登陸主機/ip' identified by '密碼';

案例:

mysql> create user 'wolf'@'localhost' identified by '123456'; Query OK, 0 rows affected (0.01 sec) mysql> select host,user, password from user where user='wolf'; +-----------+-------+-------------------------------------------+ | host | user | password | +-----------+-------+-------------------------------------------+ | localhost | wolf | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-----------+-------+-------------------------------------------+

1.3 刪除用戶:

drop user '用戶名'@'主機名'

示例:

mysql> drop user 'wolf'; ERROR 1396 (HY000): Operation DROP USER failed for 'wolf'@'%' <= 直接給個用戶名,不能刪除,它默認是%,表示所有地方可以登陸的用戶 mysql> drop user 'wolf'@'localhost'; Query OK, 0 rows affected (0.00 sec)

1.4 修改用戶密碼:

語法:

  • 自己改自己密碼
set password=password('新的密碼');
  • root用戶修改指定用戶的密碼
set password for '用戶名'@'主機名'=password('新的密碼')set password for 'litao'@'localhost'=password('abcdefg');

2. 數據庫的權限

MySQL數據庫提供的權限列表:

2.1 給用戶授權:

剛創建的用戶沒有任何權限。需要給用戶授權。

語法:

grant 權限列表 on.對象名 to '用戶名'@'登陸位置' [identified by '密碼']

說明:

  • 權限列表,多個權限用逗號分開
grant select on ... grant select, delete, create on .... grant all [privileges] on ... -- 表示賦予該用戶在該對象上的所有權限
  • . : 代表本系統中的所有數據庫的所有對象(表,視圖,存儲過程等)
  • 庫.* : 表示某個數據庫中的所有數據對象(表,視圖,存儲過程等)
  • identified by可選。 如果用戶存在,賦予權限的同時修改密碼,如果該用戶不存在,就是創建用戶

案例:

mysql> show databases; -- wolf賬戶看不到mytest庫 +--------------------+ | Database | +--------------------+ | information_schema | | test | +--------------------+ 2 rows in set (0.00 sec)-- root 給 litao 賦予賬戶查詢mytest庫的DEPT表的權限 mysql> grant select on mytest.DEPT to 'wolf'@'localhost'; Query OK, 0 rows affected (0.03 sec)mysql> show databases; -- wolf賬戶可以看到mytest庫 +--------------------+ | Database | +--------------------+ | information_schema | | mytest | | test | +--------------------+ 3 rows in set (0.01 sec) mysql> use mytest; -- 切換到mytest庫 mysql> select * from DEPT; -- 查詢 DEPT表 +--------+------------+----------+ | deptno | dname | loc | +--------+------------+----------+ | 10 | sales | NEW YORK | | 20 | RESEARCH | DALLAS | | 30 | SALES | CHICAGO | | 40 | OPERATIONS | BOSTON | +--------+------------+----------+ 4 rows in set (0.00 sec) mysql> delete from DEPT; -- 沒有刪除權限 ERROR 1142 (42000): DELETE command denied to user 'litao'@'localhost' for table 'DEPT'

注意:如果發現賦權限后,沒有生效,執行如下指令:

flush privileges;

2.2 回收權限:

語法:

revoke 權限列表 on.對象名 from '用戶名'@'登陸位置'

示例:

-- 回收wolf對數據庫的所有權限 revoke all on mytest.DEPT from 'wolf'@'localhost';

總結

以上是生活随笔為你收集整理的MYSQL视图用户管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。