1. 程式人生 > >MYSQL 事務和用戶權限

MYSQL 事務和用戶權限

and mysql 事務 特殊 多個 圖表 存儲引擎 用戶密碼 虛擬表 enc

一、 什麽是事務:簡單說,所謂事務就是一組操作,要麽操作都成功要麽都不成功。

二、事務的使用流程

  1. 第一步:開啟一個事務,start transaction;

  2. 第二步:正常的SQL語句操作,但是這些SQL語句並沒有真正的更改數據庫信息

  3.第三步:提交事務,commit,當提交事務後,SQL語句才會被真正的執行,數據庫中的信息會被改變如果,如果要取消第二步的操作可以用 rollback(回滾)語句;

三、事務的特性:原子性(Atomicity)一致性(Consistency)、隔離性(Isolation)、持久性(Durability)

  1.原子性:一個事務中的所有操作,要麽全部完成,要麽全部不完成,不會結束在中間的某個環節。如果事務執行的過程中發生錯誤會 回滾到事務開始之前的狀態,就像這個事務從來沒有被執行過一樣。

  2.一致性:數據在事務前後保持一致

  3.隔離線:某個事務的操作對其他事務不可見

  4.持久性:當事務完成後,其影響會被保留下來,不能撤銷。

四、事務使用的註意事項:存儲引擎必須是innodb,因為myisam不支持事務。

五、視圖

  1.定義:視圖是由查詢結果形成的一張虛擬表

  2.格式:create view 視圖名稱 as select 語句

  3.什麽時候用視圖:如果某個查詢結果頻繁的出現並需要使用這個做子查詢,則創建這個視圖。

  4.視圖的作用:

    1)簡化操作不用進行多表查詢

    2)可以進行權限控制把表的權限封閉,但是開放相對應的視圖權限,視圖裏只開放部分數據,比如goods商品表,如果我們不想讓別人看到我們的銷售價格,這時候我們就可以把查看商品的權限封閉,創建一張視圖 create view showGoods as select goods_id,goods_name from goods;不出現銷售價格列表就可以了。

  5.視圖的修改:alter view 視圖名 as select 語句;

  6.刪除視圖:drop view 視圖1,視圖2;

  7.視圖與基本表的關系

    1)視圖是表的查詢結果,基本表變了,會影響視圖表的結果

    2)從單表中獲取的視圖增改山會影響基本表

    3)多表視圖時,可以通過 視圖給某個表插入數據

    4)多表視圖時不可以通過視圖刪除數據

    5)多表視圖時,可以通過視圖更改數據,註意:在更改時,被更改的數據必須是在視圖中有所體現的,如果在視圖中沒有體現出來,語法沒有錯誤,那麽真實的表也不會被改變

    6)註意:包含distinct,group by ,having, union,union all , 聚合函數等 視圖是不可更新的。

一、MySQL常見操作

  1. 創建用戶:Create user ‘用戶名’@’允許登錄的地址/服務器’ identified by ‘密碼’
  2. 刪除用戶:drop user ‘用戶名’@’服務器地址’;註意:需要管理員才可以刪除
  3. 更改密碼

1) 用戶更改自己的密碼:Set password=password(‘密碼’);

2) 管理員更改用戶密碼:Set password for ‘用戶名’@’允許登錄的地址’=password(‘密碼’);

  1. 為用戶授予權限

1) 格式:grant 權限1,權限2.. on 某庫.某個對象 to ‘用戶名’@’允許登錄的位置’ 【identified by ‘密碼’】;

2) 說明:

l 權限列表,就是,多個權限的名詞,相互之間用逗號分開,比如: select, insert, update

l 也可以寫:all

l 某庫.某個對象,表示,給指定的某個數據庫中的某個“下級單位”賦權;

l 下級單位有:表名,視圖名等

l 其中,有2個特殊的語法:

l *.*: 代表所有數據庫中的所有下級單位;

l 某庫.* :代表指定的該庫中的所有下級單位;

l 3,【identified by ‘密碼’】是可省略部分,如果不省略,就表示賦權的同時,也去修改它的密碼;

l 但:如果該用戶不存儲,此時其實就是創建一個新用戶;並此時就必須設置其密碼了

  1. 剝奪權限:revoke 權限列表 on 某庫.某個對象 from ‘用戶名’@’允許登錄的位置’

二、忘記登錄密碼的解決方法

  1. 進入命令行界面,輸入net stop mysql
  2. mysqld --skip-grant-tables
  3. 此時可以免密碼登錄:mysql -u root –p
  4. 登錄後設置新密碼:update mysql.user set authentication_string=password(‘msh8888‘) where user=‘root‘ and Host = ‘localhost‘;
  5. 刷新權限表flush privileges;

三、SQL語句的分類

  1. 數據定義語言(DDL):用於創建、修改、和刪除數據庫內的數據結構,如:

1) 創建和刪除數據庫(CREATE DATABASE || DROP DATABASE);

2) 創建、修改、重命名、刪除表(CREATE TABLE || ALTER TABLE|| RENAME TABLE||DROP TABLE);

3) 創建和刪除索引(CREATEINDEX || DROP INDEX)

  1. 數據查詢語言(DQL):從數據庫中的一個或多個表中查詢數據(SELECT)
  2. 數據操作語言(DML):修改數據庫中的數據,包括插入(INSERT)、更新(UPDATE)和刪除(DELETE)
  3. 數據控制語言(DCL):用於對數據庫的訪問,如:

1) 給用戶授予訪問權限(GRANT);

2) 取消用戶訪問權限(REMOKE)

  

MYSQL 事務和用戶權限