MYSQL视图用户管理
生活随笔
收集整理的這篇文章主要介紹了
MYSQL视图用户管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MYSQL視圖
文章目錄
- MYSQL視圖
- 1. 基本使用
- 2. 視圖規則和限制
- 用戶管理
- 1. 用戶
- 2. 數據庫的權限
視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。視圖的數據變化會影響到基表,基表的數據變化也會影響到視圖
1. 基本使用
- 創建視圖
案例
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 | +--------+------------+- 修改了視圖,對基表數據有影響
- 修改了基表,對視圖有影響
- 刪除視圖
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 修改用戶密碼:
語法:
- 自己改自己密碼
- root用戶修改指定用戶的密碼
2. 數據庫的權限
MySQL數據庫提供的權限列表:
2.1 給用戶授權:
剛創建的用戶沒有任何權限。需要給用戶授權。
語法:
grant 權限列表 on 庫.對象名 to '用戶名'@'登陸位置' [identified by '密碼']說明:
- 權限列表,多個權限用逗號分開
- . : 代表本系統中的所有數據庫的所有對象(表,視圖,存儲過程等)
- 庫.* : 表示某個數據庫中的所有數據對象(表,視圖,存儲過程等)
- 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视图用户管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL的索引特性
- 下一篇: linux cmake编译源码,linu