mysql資料庫中的許可權列表,mysql資料庫許可權中哪些屬於伺服器管理許可權

本文目錄一覽:

MySQL的許可權有哪些

mysql常用的許可權:

CREATE 資料庫、表或索引創建許可權

DROP 資料庫或表刪除許可權

GRANT OPTION 資料庫、表或保存的程序許可權

REFERENCES 資料庫或表

ALTER 更改表,比如添加欄位、索引等

DELETE 刪除數據許可權

INDEX 索引許可權

INSERT 插入許可權

SELECT 查詢許可權

UPDATE 更新許可權

CREATE VIEW 視圖,創建視圖許可權

SHOW VIEW 視圖,視圖許可權

ALTER ROUTINE 存儲過程,更改存儲過程許可權

CREATE ROUTINE 存儲過程,創建存儲過程許可權

EXECUTE 存儲過程,執行存儲過程許可權

mysql資料庫有幾張授權表

mysql授權表共有5個表:user、db、host、tables_priv和columns_priv。

授權表的內容有如下用途:

·user表

user表列出可以連接伺服器的用戶及其口令,並且它指定他們有哪種全局(超級用戶)許可權。在user表啟用的任何許可權均是全局許可權,並適用於所有資料庫。例如,如果你啟用了DELETE許可權,在這裡列出的用戶可以從任何錶中刪除記錄,所以在你這樣做之前要認真考慮。

·db表

db表列出資料庫,而用戶有許可權訪問它們。在這裡指定的許可權適用於一個資料庫中的所有表。

·host表

host表與db表結合使用在一個較好層次上控制特定主機對資料庫的訪問許可權,這可能比單獨使用db好些。這個表不受GRANT和REVOKE語句的影響,所以,你可能發覺你根本不是用它。

·tables_priv表

tables_priv表指定表級許可權,在這裡指定的一個許可權適用於一個表的所有列。

·columns_priv表

columns_priv表指定列級許可權。這裡指定的許可權適用於一個表的特定列。

MySQL 資料庫,如何分角色許可權建表?

角色一直存在各個資料庫中,比如 SQL Server、Oracle 等,MySQL 自從版本 8.0 release,引入了角色這個概念。

角色的概念

角色就是一組針對各種資料庫許可權的集合。比如,把一個角色分配給一個用戶,那這個用戶就擁有了這個角色包含的所有許可權。一個角色可以分配給多個用戶,另外一個用戶也可以擁有多個角色,兩者是多對多的關係。不過 MySQL 角色目前還沒有提供類似於其他資料庫的系統預分配的角色。比如某些資料庫的 db_owner、 db_datareader 、 db_datawriter 等等。那接下來我分幾個方面,來示例說明角色的使用以及相關注意事項。

示例 1:一個完整角色的授予步驟

用管理員創建三個角色:db_owner, db_datareader, db_datawriter

mysql create role db_owner,db_datareader,db_datawriter;

Query OK, 0 rows affected (0.02 sec)

mysql grant all on ytt_new.* to db_owner;

Query OK, 0 rows affected (0.01 sec)

mysql grant select on ytt_new.* to db_datareader;

Query OK, 0 rows affected (0.01 sec)

mysql grant insert,delete,update on ytt_new.* to db_datawriter;

Query OK, 0 rows affected (0.01 sec)

創建三個普通用戶,分別為 ytt1、ytt2、ytt3。mysql create user ytt1 identified by ‘ytt’,ytt2 identified by ‘ytt’,ytt3 identified by ‘ytt’;Query OK, 0 rows affected (0.01 sec)

分別授予這三個用戶對應的角色。

— 授權角色

mysql grant db_owner to ytt1;

Query OK, 0 rows affected (0.02 sec)

— 激活角色

mysql set default role db_owner to ytt1;

Query OK, 0 rows affected (0.00 sec)

mysql grant db_datareader to ytt2;

Query OK, 0 rows affected (0.01 sec)

mysql set default role db_datareader to ytt2;

Query OK, 0 rows affected (0.01 sec)

mysql grant db_datawriter to ytt3;

Query OK, 0 rows affected (0.01 sec)

mysql set default role db_datawriter to ytt3;

Query OK, 0 rows affected (0.01 sec)

以上是角色授予的一套完整步驟。那上面有點非常規的地方是激活角色這個步驟。MySQL 角色在創建之初默認是沒有激活的,也就是說創建角色,並且給一個用戶特定的角色,這個用戶其實並不能直接使用這個角色,除非激活了才可以。

示例 2:一個用戶可以擁有多個角色

— 用管理員登錄並且創建用戶

mysql create user ytt4 identified by ‘ytt’;

Query OK, 0 rows affected (0.00 sec)

— 把之前的三個角色都分配給用戶ytt4.

mysql grant db_owner,db_datareader,db_datawriter to ytt4;

Query OK, 0 rows affected (0.01 sec)

— 激活用戶ytt4的所有角色.

mysql set default role all to ytt4;

Query OK, 0 rows affected (0.02 sec)

— ytt4 用戶登錄

root@ytt-pc:/var/lib/mysql# mysql -uytt4 -pytt -P3304 -hytt-pc

— 查看當前角色列表

mysql select current_role();

+——————————————————–+

| current_role()                                         |

+——————————————————–+

| `db_datareader`@`%`,`db_datawriter`@`%`,`db_owner`@`%` |

+——————————————————–+

1 row in set (0.00 sec)

— 簡單創建一張表並且插入記錄, 檢索記錄,完了刪掉這張表

mysql use ytt_new

Database changed

mysql create table t11(id int);

Query OK, 0 rows affected (0.05 sec)

mysql insert into t11 values (1);

Query OK, 1 row affected (0.02 sec)

mysql select * from t11;

+——+

| id   |

+——+

|    1 |

+——+

1 row in set (0.00 sec)

mysql drop table t11;

Query OK, 0 rows affected (0.04 sec)

示例 3:用戶在當前 session 里角色互換

其實意思是說,用戶連接到 MySQL 伺服器後,可以切換當前的角色列表,比如由 db_owner 切換到 db_datareader。

— 還是之前的用戶ytt4, 切換到db_datareader

mysql set role db_datareader;

Query OK, 0 rows affected (0.00 sec)

mysql select current_role();

+———————+

| current_role()      |

+———————+

| `db_datareader`@`%` |

+———————+

1 row in set (0.00 sec)

— 切換後,沒有許可權創建表

mysql create table t11(id int);

ERROR 1142 (42000): CREATE command denied to user ‘ytt4’@’ytt-pc’ for table ‘t11’

— 切換到 db_owner,恢復所有許可權。

mysql set role db_owner;

Query OK, 0 rows affected (0.00 sec)

mysql create table t11(id int);

Query OK, 0 rows affected (0.04 sec)

示例 4:關於角色的兩個參數

activate_all_roles_on_login:是否在連接 MySQL 服務時自動激活角色mandatory_roles:強制所有用戶默認角色

— 用管理員連接MySQL,

— 設置默認激活角色

mysql set global activate_all_roles_on_login=on;

Query OK, 0 rows affected (0.00 sec)

— 設置強制給所有用戶賦予角色db_datareader

mysql set global mandatory_roles=’db_datareader’;

Query OK, 0 rows affected (0.00 sec)

— 創建用戶ytt7.

mysql create user ytt7;

Query OK, 0 rows affected (0.01 sec)

— 用 ytt7登錄資料庫

root@ytt-pc:/var/lib/mysql# mysql -uytt7 -P3304 -hytt-pc

mysql show grants;

+——————————————-+

| Grants for ytt7@%                         |

+——————————————-+

| GRANT USAGE ON *.* TO `ytt7`@`%`          |

| GRANT SELECT ON `ytt_new`.* TO `ytt7`@`%` |

| GRANT `db_datareader`@`%` TO `ytt7`@`%`   |

+——————————————-+

3 rows in set (0.00 sec)

示例 5 :create role 和 create user 都有創建角色許可權,兩者有啥區別?

以下分別創建兩個用戶 ytt8、ytt9,一個給 create role,一個給 create user 許可權。

— 管理員登錄,創建用戶ytt8,ytt9.

mysql create user ytt8,ytt9;

Query OK, 0 rows affected (0.01 sec)

mysql grant create role on *.* to ytt8;

Query OK, 0 rows affected (0.02 sec)

mysql grant create user on *.* to ytt9;

Query OK, 0 rows affected (0.01 sec)

— 用ytt8 登錄,

root@ytt-pc:/var/lib/mysql# mysql -uytt8 -P3304 -hytt-pc

mysql create role db_test;

Query OK, 0 rows affected (0.02 sec)

— 可以創建角色,但是不能創建用戶

mysql create user ytt10;

ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation

mysql \q

Bye

— 用ytt9 登錄

root@ytt-pc:/var/lib/mysql# mysql -uytt9 -P3304 -hytt-pc

— 角色和用戶都能創建

mysql create role db_test2;

Query OK, 0 rows affected (0.02 sec)

mysql create user ytt10;

Query OK, 0 rows affected (0.01 sec)

mysql \q

Bye

那這裡其實看到 create user 包含了 create role,create user 即可以創建用戶,也可以創建角色。

示例 6:MySQL 用戶也可以當角色來用

— 用管理員登錄,創建用戶ytt11,ytt12.

mysql create user ytt11,ytt12;

Query OK, 0 rows affected (0.01 sec)

mysql grant select on ytt_new.* to ytt11;

Query OK, 0 rows affected (0.01 sec)

— 把ytt11普通用戶的許可權授予給ytt12

mysql grant ytt11 to ytt12;

Query OK, 0 rows affected (0.01 sec)

— 來查看 ytt12的許可權,可以看到擁有了ytt11的許可權

mysql show grants for ytt12;

+———————————–+

| Grants for ytt12@%                |

+———————————–+

| GRANT USAGE ON *.* TO `ytt12`@`%` |

| GRANT `ytt11`@`%` TO `ytt12`@`%`  |

+———————————–+

2 rows in set (0.00 sec)

— 在細化點,看看ytt12擁有哪些具體的許可權

mysql show grants for ytt12 using ytt11;

+——————————————–+

| Grants for ytt12@%                         |

+——————————————–+

| GRANT USAGE ON *.* TO `ytt12`@`%`          |

| GRANT SELECT ON `ytt_new`.* TO `ytt12`@`%` |

| GRANT `ytt11`@`%` TO `ytt12`@`%`           |

+——————————————–+

3 rows in set (0.00 sec)

示例 7:角色的撤銷

角色撤銷和之前許可權撤銷類似。要麼 revoke,要麼刪除角色,那這個角色會從所有擁有它的用戶上移除。

— 用管理員登錄,移除ytt2的角色

mysql revoke db_datareader from ytt2;

Query OK, 0 rows affected (0.01 sec)

— 刪除所有角色

mysql drop role db_owner,db_datareader,db_datawriter;

Query OK, 0 rows affected (0.01 sec)

— 對應的角色也從ytt1上移除掉了

mysql show grants for ytt1;

+———————————-+

| Grants for ytt1@%                |

+———————————-+

| GRANT USAGE ON *.* TO `ytt1`@`%` |

+———————————-+

1 row in set (0.00 sec)

至此,我分了 7 個目錄說明了角色在各個方面的使用以及注意事項,希望對大家有幫助。

如何用phpmyadmin設置mysql資料庫用戶的許可權

首先打開phpMyadmin;

點擊用戶菜單;

在任意用戶菜單上點擊「編輯許可權」;

修改密碼點擊執行就OK了

許可權意思可以對照下面翻譯:

數據:

SELECT:允許讀取數據。

INSERT:允許插入和替換數據。

UPDATA:允許更改數據。

DELETE:允許刪除數據。

FILE:允許從文件中導入數據以及將數據導出至文件。

結構:

CREATE:允許創建新資料庫和表。

ALTER:允許修改現有表的結構。

INDEX:允許創建和刪除索引。

DROP:允許刪除資料庫和表。

CREATE TEMPORARY TABLES:允許創建暫時表。

CREATE VIEW:允許創建新的意見。

SHOW VIEW:顯示創建的看法。

CREATE ROUTINE:允許創建存儲過程。

ALTER ROUTINE:允許改變和下降存儲過程。

EXECUTE:允許許執行存儲過程。

管理:

GRANT:允許添加用戶和許可權,而不允許重新載入許可權表。

SUPER:允許在達到最大允許數目時仍進行連接。

PROCESS:允許查看進程列表中的完整查詢。

RELOAD:允許重新載入伺服器設置並刷新伺服器的緩存。

SHUTDOWN:允許關閉伺服器。

SHOW DATABASES:允許訪問完整的資料庫列表。

LOCK TABLES:允許鎖住當前線索的表。

REFERENCES:在此版本的 MySQL 中無效。

REPLICATION CLIENT:用戶有權詢問附屬者/控制者在哪裡。

REPLICATION SLAVE:回復附屬者所需。

CREATE USER:允許創建,下降和重新命名的用戶帳戶。

mysql用戶操作資料庫的全部許可權有哪些

MySQL中所有使用者的許可權是記錄在mysql這個資料庫的users資料表中

所以你只要先use mysql

再SELECT * FROM users 你可以看到所有的使用者許可權

有關db的數據是記錄在Db(大小寫要注意)這個數據表中

所以只要呼叫出Db的資料 SELECT * FROM Db 就可以看到你要的答案

或者你可以用 SELECT * FROM Db WHERE Db=’phplampDB’找出你要的答案

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198621.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-04 10:26
下一篇 2024-12-04 10:26

相關推薦

  • Python 常用資料庫有哪些?

    在Python編程中,資料庫是不可或缺的一部分。隨著互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的資料庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝資料庫方案

    本文將介紹在openeuler操作系統中安裝資料庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟體源 sudo…

    編程 2025-04-29
  • 資料庫第三範式會有刪除插入異常

    如果沒有正確設計資料庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係資料庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • Python怎麼導入資料庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的資料庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • 如何選擇MySQL伺服器文件許可權

    MySQL是一種流行的關係型資料庫管理系統。在安裝MySQL時,選擇正確的文件許可權是保證安全和性能的重要步驟。以下是一些指導您選擇正確許可權的建議。 一、許可權選擇 MySQL伺服器需…

    編程 2025-04-27
  • Think-ORM數據模型及資料庫核心操作

    本文主要介紹Think-ORM數據模型建立和資料庫核心操作。 一、模型定義 Think-ORM是一個開源的ORM框架,用於簡化在PHP應用中(特別是ThinkPHP)與關係資料庫之…

    編程 2025-04-27
  • 如何使用Python將CSV文件導入到資料庫

    CSV(Comma Separated Values)是一種可讀性高、易於編輯與導入導出的文件格式,常用於存儲表格數據。在數據處理過程中,我們有時需要將CSV文件導入到資料庫中進行…

    編程 2025-04-27
  • Python批量導入資料庫

    本文將介紹Python中如何批量導入資料庫。首先,對於數據分析和挖掘領域,資料庫中批量導入數據是一個必不可少的過程。這種高效的導入方式可以極大地提高數據挖掘、機器學習等任務的效率。…

    編程 2025-04-27
  • Activiti 6自動部署後不生成資料庫act_hi_*的解決方法

    本文將從多個方面詳細闡述Activiti 6自動部署後不生成資料庫act_hi_*的問題,並提供對應的代碼示例。 一、問題分析 在使用Activiti 6部署流程後,我們發現act…

    編程 2025-04-27

發表回復

登錄後才能評論