如何設計數據庫及授予權限?

數據庫中,我們可以做許許多多的事情,比如給用戶授予權限,設計數據庫等等。今天我們就來介紹一下設計數據庫及授予權限的方法。

如何設計數據庫及授予權限?

權限及設計數據庫

用戶管理

使用sqlyog 創建用戶,并授予權限演示

如何設計數據庫及授予權限?

基本命令

/*?用戶和權限管理?*/?------------------ 用戶信息表:mysql.user  --?刷新權限 FLUSH?PRIVILEGES ? --?增加用戶??CREATE?USER?kuangshen?IDENTIFIED?BY?'123456' CREATE?USER?用戶名?IDENTIFIED?BY?[PASSWORD]?密碼(字符串) ????-?必須擁有mysql數據庫的全局CREATE?USER權限,或擁有INSERT權限。 ????-?只能創建用戶,不能賦予權限。 ????-?用戶名,注意引號:如?'user_name'@'192.168.1.1' ????-?密碼也需引號,純數字密碼也要加引號 ????-?要在純文本中指定密碼,需忽略PASSWORD關鍵詞。要把密碼指定為由PASSWORD()函數返回的混編值,需包含關鍵字PASSWORD  --?重命名用戶??RENAME?USER?kuangshen?TO?kuangshen2 RENAME?USER?old_user?TO?new_user  --?設置密碼 SET?PASSWORD?=?PASSWORD('密碼')????--?為當前用戶設置密碼 SET?PASSWORD?FOR?用戶名?=?PASSWORD('密碼')????--?為指定用戶設置密碼  --?刪除用戶??DROP?USER?kuangshen2 DROP?USER?用戶名  --?分配權限/添加用戶 GRANT?權限列表?ON?表名?TO?用戶名?[IDENTIFIED?BY?[PASSWORD]?'password'] ????-?all?privileges?表示所有權限 ????-?*.*?表示所有庫的所有表 ????-?庫名.表名?表示某庫下面的某表  --?查看權限???SHOW?GRANTS?FOR?root@localhost; SHOW?GRANTS?FOR?用戶名 ????--?查看當前用戶權限 ????SHOW?GRANTS;?或?SHOW?GRANTS?FOR?CURRENT_USER;?或?SHOW?GRANTS?FOR?CURRENT_USER();  --?撤消權限 REVOKE?權限列表?ON?表名?FROM?用戶名 REVOKE?ALL?PRIVILEGES,?GRANT?OPTION?FROM?用戶名????--?撤銷所有權限

權限解釋

--?權限列表 ALL?[PRIVILEGES]????--?設置除GRANT?OPTION之外的所有簡單權限 ALTER????--?允許使用ALTER?TABLE ALTER?ROUTINE????--?更改或取消已存儲的子程序 CREATE????--?允許使用CREATE?TABLE CREATE?ROUTINE????--?創建已存儲的子程序 CREATE?TEMPORARY?TABLES????????--?允許使用CREATE?TEMPORARY?TABLE CREATE?USER????????--?允許使用CREATE?USER,?DROP?USER,?RENAME?USER和REVOKE?ALL?PRIVILEGES。 CREATE?VIEW????????--?允許使用CREATE?VIEW DELETE????--?允許使用DELETE DROP????--?允許使用DROP?TABLE EXECUTE????????--?允許用戶運行已存儲的子程序 FILE????--?允許使用SELECT...INTO?OUTFILE和LOAD?DATA?INFILE INDEX?????--?允許使用CREATE?INDEX和DROP?INDEX INSERT????--?允許使用INSERT LOCK?TABLES????????--?允許對您擁有SELECT權限的表使用LOCK?TABLES PROCESS?????--?允許使用SHOW?FULL?PROCESSLIST REFERENCES????--?未被實施 RELOAD????--?允許使用FLUSH REPLICATION?CLIENT????--?允許用戶詢問從屬服務器或主服務器的地址 REPLICATION?SLAVE????--?用于復制型從屬服務器(從主服務器中讀取二進制日志事件) SELECT????--?允許使用SELECT SHOW?DATABASES????--?顯示所有數據庫 SHOW?VIEW????--?允許使用SHOW?CREATE?VIEW SHUTDOWN????--?允許使用mysqladmin?shutdown SUPER????--?允許使用CHANGE?MASTER,?KILL,?PURGE?MASTER?LOGS和SET?GLOBAL語句,mysqladmin?debug命令;允許您連接(一次),即使已達到max_connections。 UPDATE????--?允許使用UPDATE USAGE????--?“無權限”的同義詞 GRANT?OPTION????--?允許授予權限   /*?表維護?*/  --?分析和存儲表的關鍵字分布 ANALYZE?[LOCAL?|?NO_WRITE_TO_BINLOG]?TABLE?表名?... --?檢查一個或多個表是否有錯誤 CHECK?TABLE?tbl_name?[,?tbl_name]?...?[option]?... option?=?{QUICK?|?FAST?|?MEDIUM?|?EXTENDED?|?CHANGED} --?整理數據文件的碎片 OPTIMIZE?[LOCAL?|?NO_WRITE_TO_BINLOG]?TABLE?tbl_name?[,?tbl_name]?...

MySQL備份

數據庫備份必要性

  • 保證重要數據不丟失

  • 數據轉移

MySQL數據庫備份方法

  • mysqldump備份工具

  • 數據庫管理工具,如SQLyog

  • 直接拷貝數據庫文件和相關配置文件

mysqldump客戶端

作用 :

  • 轉儲數據庫

  • 搜集數據庫進行備份

  • 將數據轉移到另一個SQL服務器,不一定是MySQL服務器

如何設計數據庫及授予權限?

--?導出 1.?導出一張表?--?mysqldump?-uroot?-p123456?school?student?&gt;D:/a.sql   mysqldump?-u用戶名?-p密碼?庫名?表名?&gt;?文件名(D:/a.sql) 2.?導出多張表?--?mysqldump?-uroot?-p123456?school?student?result?&gt;D:/a.sql   mysqldump?-u用戶名?-p密碼?庫名?表1?表2?表3?&gt;?文件名(D:/a.sql) 3.?導出所有表?--?mysqldump?-uroot?-p123456?school?&gt;D:/a.sql   mysqldump?-u用戶名?-p密碼?庫名?&gt;?文件名(D:/a.sql) 4.?導出一個庫?--?mysqldump?-uroot?-p123456?-B?school?&gt;D:/a.sql   mysqldump?-u用戶名?-p密碼?-B?庫名?&gt;?文件名(D:/a.sql)  可以-w攜帶備份條件  --?導入 1.?在登錄mysql的情況下:--?source?D:/a.sql   source??備份文件 2.?在不登錄的情況下   mysql?-u用戶名?-p密碼?庫名?<h2>規范化數據庫設計</h2><h3>為什么需要數據庫設計</h3><p><strong>當數據庫比較復雜時我們需要設計數據庫</strong></p><p><strong>糟糕的數據庫設計 :</strong></p>
  • 數據冗余,存儲空間浪費

  • 數據更新和插入的異常

  • 程序性能差

良好的數據庫設計 :

  • 節省數據的存儲空間

  • 能夠保證數據的完整性

  • 方便進行數據庫應用系統的開發

軟件項目開發周期中數據庫設計 :

  • 需求分析階段: 分析客戶的業務和數據處理需求

  • 概要設計階段:設計數據庫的E-R模型圖 , 確認需求信息的正確和完整.

設計數據庫步驟

  • 收集信息

    • 與該系統有關人員進行交流 , 座談 , 充分了解用戶需求 , 理解數據庫需要完成的任務.

  • 標識實體[Entity]

    • 標識數據庫要管理的關鍵對象或實體,實體一般是名詞

  • 標識每個實體需要存儲的詳細信息[Attribute]

  • 標識實體之間的關系[Relationship]

三大范式

問題 : 為什么需要數據規范化?

不合規范的表設計會導致的問題:

  • 信息重復

  • 更新異常

  • 插入異常

    • 無法正確表示信息

  • 刪除異常

    • 丟失有效信息

三大范式

第一范式 (1st NF)

第一范式的目標是確保每列的原子性,如果每列都是不可再分的最小數據單元,則滿足第一范式

第二范式(2nd NF)

第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。

第二范式要求每個表只描述一件事情

第三范式(3rd NF)

如果一個關系滿足第二范式,并且除了主鍵以外的其他列都不傳遞依賴于主鍵列,則滿足第三范式.

第三范式需要確保數據表中的每一列數據都和主鍵直接相關,而不能間接相關。

規范化和性能的關系

為滿足某種商業目標 , 數據庫性能比規范化數據庫更重要

在數據規范化的同時 , 要綜合考慮數據庫的性能

通過在給定的表中添加額外的字段,以大量減少需要從中搜索信息所需的時間

通過在給定的表中插入計算列,以方便查詢

相關學習推薦:mysql教程(視頻)

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享