首頁  >  文章  >  資料庫  >  如何設計資料庫及授予權限?

如何設計資料庫及授予權限?

醉折花枝作酒筹
醉折花枝作酒筹轉載
2021-07-07 09:14:252820瀏覽

在資料庫中,我們可以做許許多多的事情,例如給使用者授予權限,設計資料庫等等。今天我們就來介紹一下設計資料庫及授予權限的方法。

如何設計資料庫及授予權限?

權限及設計資料庫

用戶管理

使用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 >D:/a.sql
      mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql)
    2. 导出多张表 -- mysqldump -uroot -p123456 school student result >D:/a.sql
      mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 文件名(D:/a.sql)
    3. 导出所有表 -- mysqldump -uroot -p123456 school >D:/a.sql
      mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql)
    4. 导出一个库 -- mysqldump -uroot -p123456 -B school >D:/a.sql
      mysqldump -u用户名 -p密码 -B 库名 > 文件名(D:/a.sql)
    
    可以-w携带备份条件
    
    -- 导入
    1. 在登录mysql的情况下:-- source D:/a.sql
      source  备份文件
    2. 在不登录的情况下
      mysql -u用户名 -p密码 库名 < 备份文件

    標準化資料庫設計
  • 為什麼需要資料庫設計

  • 當資料庫比較複雜時我們需要設計資料庫

糟糕的資料庫設計:

  • 資料冗餘,儲存空間浪費
  • 資料更新與插入的異常
  • 程式效能差

#好的資料庫設計:

  • 節省資料的儲存空間
  • 能夠保證資料的完整性

#方便進行資料庫應用系統的開發

  • #軟體專案開發週期中資料庫設計:

    • 需求分析階段:分析客戶的業務和資料處理需求
  • ##概要設計階段:設計資料庫的E-R模型圖, 確認需求資訊的正確與完整.
    • 設計資料庫步驟

  • 收集資訊

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

標識實體[Entity]

#標識資料庫要管理的關鍵物件或實體,實體一般是名詞
  • 標識每個實體需要儲存的詳細資訊[Attribute]

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

    • 三大範式

    • #問題: 為什麼需要資料規範化?
  • 不合規範的表格設計會導致的問題:

    • 訊息重複

    #更新異常

插入異常

##插入異常

#無法正確表示訊息

刪除異常

遺失有效資訊

#三大範式

第一範式(1st NF)

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

#第二範式(2nd NF)

###第二範式(2NF)是在第一範式(1NF)的基礎上建立起來的,即滿足第二範式(2NF)必須先滿足第一範式(1NF)。 ######第二範式要求每個表格只描述一件事情#########第三個範式(3rd NF)#########如果一個關係滿足第二範式,且除了主鍵以外的其他列都不傳遞依賴於主鍵列,則滿足第三範式.######第三範式需要確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關。 #########規範化和效能的關係#########為滿足某種商業目標, 資料庫效能比規範化資料庫更重要######在資料規範化的同時, 要綜合考慮資料庫的性能######透過在給定的表中添加額外的字段,以大量減少需要從中搜索信息所需的時間######通過在給定的表中插入計算列,以方便查詢######相關學習推薦:###mysql教學###(影片)###

以上是如何設計資料庫及授予權限?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除