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-hant/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

發表回復

登錄後才能評論