1
2
3
4
5
6
7
8
9
10
11

MySQL用戶管理

發(fā)布時間:2017-07-20 07:53   發(fā)布人:毛書朋   浏覽次數:7590


關聯課件:  3子項目三 - MySQL用戶管理(點擊在線預覽)


3.3.4  MySQL用戶管理

      前面(miàn)進(jìn)入MySQL控制台時,使用的是MySQL的超級管理用戶,即用戶名爲root的用戶。事(shì)實上在實際應用中一台數據庫服務器往往多人同時使用,這(zhè)時如果隻有一個用戶賬号顯然不夠用。而且root用戶擁有對(duì)數據庫的全部權限,可以對(duì)數據庫進(jìn)行任意操作,當然不希望這(zhè)個賬号被一個一般的管理員使用。因此需要在MySQL中分配帳号,每個賬号可以管理各自的數據庫,不能(néng)越權。這(zhè)樣可以很好(hǎo)的提高數據庫的安全性。

      在MySQL中,增加新用戶的方法主要有兩(liǎng)個:一是直接向(xiàng)MySQL用戶表中插入新記錄;二是使用grant授權命令。

      MySQL的用戶賬号和密碼以及權限等信息,都(dōu)存儲在一個名爲“mysql”的數據庫的“user”表中(MySQL安裝完成(chéng)後(hòu)自動創建,可以在控制台下查看)。分别執行以下兩(liǎng)個命令:

mysql> use mysql

mysql> select * from user;

      這(zhè)時可以看到類似于下面(miàn)樣式的返回結果(以下結果進(jìn)行過(guò)簡化)

----------- ------- ------------------ ------------- ------------- ------------

| Host      | User  | Password  ……

| %        | root   | 1c8bc9fa64c40b82  ……

----------- ------- ------------------ ------------- ------------- ------------

1 rows in set (0.00 sec)

      可以看到查詢出了user表中的記錄,每條記錄就是一個用戶賬号信息。由于user表有數十個字段,因此讀者看到的查詢結果可能(néng)顯示的比較零亂,這(zhè)是由于屏幕尺寸有限,無法在一行内顯示出所有字段,自動換行後(hòu)導緻的。

      新安裝的MySQL,一般USER表中有兩(liǎng)個用戶,分别是root和匿名用戶。匿名用戶即不需要用戶名和密碼即可進(jìn)入系統的用戶。

      在user表中,前3個字段Host、User、Password分别表示登錄主機、用戶名和密碼。登錄主機表示此用戶允許登錄的主機地址,即IP地址。“%”表示任意主機。如果本用戶隻能(néng)從本地登錄,不允許遠程登錄,可以用“localhost”或本機IP地址。用戶密碼用加密方式存儲,因此看到的密碼是一串無規則的字符串。從第4個字段以後(hòu)的字段,表示權限狀态,即該用戶是否有某權限。這(zhè)些權限包括查詢權限、修改權限、删除權限等。

      知道(dào)了MySQL存儲用戶的基本原理,就自然可以想到,增加一個用戶的第一種(zhǒng)方法就是直接向(xiàng)這(zhè)個表中插入新記錄。但是由于user表字段較多,用INSERT語句向(xiàng)表中插入記錄比較麻煩,因此這(zhè)種(zhǒng)方法雖然可行,但很少被采用。

      創建新用戶以及爲用戶分配權限的第二種(zhǒng)方法是使用GRANT命令。GRANT命令功能(néng)強大,相比于直接插入用戶簡單的多,因此是采用比較多的方法。下面(miàn)是GRANT命令的語法結構:

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]

ON {tbl_name | * | *.* | db_name.*}

TO user_name [IDENTIFIED BY 'password']

    [, user_name [IDENTIFIED BY 'password'] ...]

[WITH GRANT OPTION]

      這(zhè)是完整的GRANT語句語法結構。看起(qǐ)來比較複雜。使用本命令可以一次創建多個MySQL賬号。在實際應用中一般一次隻創建一個用戶,這(zhè)樣語法結構就可以簡化爲:

GRANT  priv_type [(column_list)]]

ON  {tbl_name | * | *.* | db_name.*}

TO  user_name  [IDENTIFIED BY 'password']

     而到了具體的語句中,還(hái)可以繼續簡化。如:

mysql> GRANT ALL ON DB1.* to “Nie” IDENTIFIED BY “123456”;

    此語句執行之後(hòu)創建用戶Nie,密碼123456,該用戶對(duì)數據庫DB1擁有全部權限。

    下面(miàn)我們對(duì)GRANT語句的語法結構進(jìn)行簡要分析。

·      GRANT——關鍵字,表示授權語句開(kāi)始。

·      priv_type——權限類型。可以是select/delete/update/create/drop/alter等任意一種(zhǒng)。如果是全部權限,可以用all privileges,并且可以簡寫爲all。

·      ON { tbl_name | * | *.* | db_name.*}——聲明此用戶可以操作哪些數據庫以及哪些表。聲明可以使用以下4種(zhǒng)方法之一:

Ø  tbl_name:直接指定表名,如info。

Ø  *:任意表。

Ø  *.*:任意數據庫的任意表。

Ø  db_name.*:指定數據庫的所有表,如db1。

·      TO user_name:指定用戶名。即要創建的賬号的用戶名,如上例中的“Nie”。

·      IDENTIFIED BY:此項目爲可選。指定賬号所對(duì)應的密碼。應用引号引起(qǐ)來。密碼提交後(hòu)會自動被加密。

本節介紹了MySQL中用戶管理的基本方法。尤其是講解了GRANT語句的使用方法。實際應用中該語句十分靈活、方便,熟練掌握GRANT語句可以在進(jìn)行MySQL管理時遊刃有餘。




  • 劉普敏 2018-01-07 15:42:03
    MySQL分爲普通用戶與root用戶。這(zhè)兩(liǎng)種(zhǒng)用戶的權限不一樣。
  • 鄒文濤 2018-01-08 08:26:34
    内容很詳細,講解的很清楚。也很有趣,生動。
  • 向(xiàng)珍 2018-01-09 15:36:57
    MySQL用戶管理講解的很到位,知識點都(dōu)很詳細。
  • 劉鑫蕊 2018-01-09 16:07:39
    老師講的很詳細,從中學(xué)到了很多。
  • 徐新如 2018-01-09 16:09:24
    1.權限表 MYSQL是一個多用戶的數據庫,MYSQL的用戶可以分爲兩(liǎng)大類: (1) 超級管理員用戶(root),擁有全部權限 (2) 普通用戶,由root創建,普通用戶隻擁有root所分配的權限
  • 嶽猛 2018-01-09 16:14:01
    講的内容對(duì)于我們這(zhè)個階段來講是非常的實用的
  • 魏德旺 2018-01-09 16:21:37
    直接向(xiàng)MySQL用戶表中插入新記錄,使用grant授權命令。有點懵
  • 甄丹丹 2018-01-09 16:28:12
    條理清晰,通俗易懂
  • 郭蓉 2018-01-09 16:54:54
    講解到位,受益匪淺
  • 屈佳麗 2018-01-09 17:16:18
    比較具體,便于理解,對(duì)學(xué)習MySQL幫助很大
  • 李文傑 2018-01-09 17:16:24
    講的很細膩
  • 王懷宇 2018-01-09 20:29:25
    介紹了MySQL中用戶管理的基本方法,尤其是講解了GRANT語句的使用方法,熟練掌握GRANT語句可以在進(jìn)行MySQL管理時遊刃有餘,很到位。
  • 丁甯 2018-01-10 11:37:25
    一直搞不懂這(zhè),看完視頻恍然大悟
  • 李倩文 2018-01-10 11:50:33
    介紹了MySQL中用戶管理的基本方法。尤其是講解了GRANT語句的使用方法。實際應用中該語句十分靈活、方便,熟練掌握GRANT語句可以在進(jìn)行MySQL管理時遊刃有餘。
  • 劉心怡 2018-01-10 12:07:12
    通俗易懂 方便學(xué)習
  • 楊宇生 2018-01-10 19:19:31
    内容詳細易懂,感謝老師