mysql 使用者許可權管理

2022-08-27 05:03:08 字數 2882 閱讀 8127

使用者:

mysql的使用者本身只是mysql的使用者與作業系統使用者本身無關,一般而言所有使用者的使用者名稱都是公開的,密碼只有某個授權使用者才能管理,mysql的密碼採用mysql獨有的加密機制進行加密的。

在mysql上面使用者由:使用者名稱@主機組成,這就意味著我們的mysql僅僅允許通對應的主機才能訪問mysql。mysql的使用者僅僅是用來驗證身份的。

mysql的使用者賬號:  由使用者名稱@主機  組成,使用者名稱在16個字元以內,

主機可以使用:主機名:例如 www.mysql.com

mysql在驗證使用者主機**是否合法時候,mysql需要反解使用者主機名,

或者解析使用者主機名。為了加速mysql伺服器效能。而且我們訪問時候也不需要使用主機名的話,可以在啟動mysql服務時候,使用 --skip-name-resol   就不用去解析主機名了,這會大大提高使用者連線速度。

許可權:使用者是否有建立表,刪除表,修改表等許可權。是需要授權的。

在mysql上面,使用者的賬號和密碼等資訊儲存在安裝完mysql以後。並啟動資料庫之後的乙個叫做mysql的資料庫裡面的許多表裡面的,這些表包括:

user:存放使用者的賬號,密碼,全域性許可權,與及其他的非全域性許可權

db:存放了資料庫級別的許可權定義

host:已經廢棄,基本不用

tables_priv: 表級別許可權

columns_priv: 列級別許可權

procs_priv:儲存過程和儲存函式相關許可權

proxies_priv: **使用者許可權

對我們而言,最重要的就是user,db,tables_priv, column_priv, procs_priv  這幾張表

mysql伺服器程序在啟動的時候。也就是mysqld會讀取這幾張表,並在記憶體中生成授權表,因此這幾個表是直接被載入進記憶體的

以後使用者的登陸和許可權都通過檢查這6張表進行。和檢查的過程不是訪問磁碟上面的表,而是通過記憶體裡面的結構資訊完成。任何乙個sql語言的查詢都會涉及到授權表,因此放在記憶體當中,可以加速sql語言執行

許可權的級別:

全域性級別

庫級別表級別:delete,alter,select,insert,update,trigger(觸發器)

列級別:select,insert,update

而每一類級別都定義在一張表當中,楚辭之外還有兩個許可權級別比較獨特:儲存過程,儲存函式

建立使用者:3種方法

create user user_name @ host identified by 'password';

通過這種方式建立的使用者只有登入許可權。和簡單的show databases;

建立完成後,由於mysql的使用者以及許可權的表都已經讀到記憶體當中,mysql會自動重新整理記憶體授權表。

grant 命令建立使用者,grant命令本身就是授權的,也可以建立使用者,當使用者不存在時候會建立。

直接 insert into 使用者資訊到mysql.user 表中。這種方式mysql不會自動重新整理記憶體中的授權表,需要使用flush privilege;  重新整理

檢視某個使用者授權資訊:

show grants for username@host;

給使用者授權命令:

grant +許可權1,許可權2,許可權3,....... on 物件類別,許可權級別 to    username;

物件類別:table 表,  function 函式, procedure 儲存過程

許可權級別:

*  :所有庫

*.* :所有庫的所有表

db_name.* :某個庫下面所有表 

db_name.tb_name:某個庫下面的某個表

tb_name:某個表

例如:grant all privileges on db.* to username@'%';

許可權            物件類別     使用者

這裡表示授權給某個使用者,某個資料庫下面的表,或者是儲存過程,儲存函式所有許可權。

grant execute on function db.abc to username@'%';

這就表示給我們某個使用者授權 資料庫下面的儲存函式abc 執行許可權

授權某個使用者建立乙個叫做mydb的資料庫許可權。

grant create on mydb.* to username@'host';

這樣授權之後,指定使用者就只能建立我們指定名稱的資料庫了

這樣的許可權能建立指定名稱資料庫以及在資料庫下面建立表,但是卻不能對錶插入資料 更新等操作。

給某個使用者插入某個資料庫下面表的許可權。

grant insert into on mydb.* to username@'host';

給某個使用者查詢某個資料庫下面的表許可權

grant select on mydb.* to username@'host';

授權使用者alter 命令許可權

grant alter on mydb.* to username@'host';

授權使用者update 許可權,但是只能update 某個欄位的許可權。

grant update (欄位名) on mydb.* to username@'host';

授權某個使用者super 許可權

grant super on *.* to username@'host';

刪除使用者:

drop user   username@'host';

給使用者重新命名

rename user  username@'host';  to newname@'host';

取消使用者授權revoke 命令

revoke +許可權(字段) on 物件 from username@'host'

比如:revoke insert  on mydb.* from username@'host';

這裡表示從mydb這個資料庫收回 某個使用者的insert許可權。

MySQL使用者許可權管理

網際網路文件整理 mysql的使用者管理,指的是哪個使用者可以連線伺服器,從 連線,連線後能做什麼.mysql中grant語句建立mysql使用者並指定其許可權,而revoke語句刪除許可權。兩條語句實現了mysql資料庫的使用者管理,並提供與直接操作這些表的內容不同的另一種方法。create和re...

mysql 使用者許可權管理

mysql 中顯示所有使用者 select distinct concat user user,host,as query from mysql.user 檢視乙個使用者的許可權 show grants for company 為使用者授權 grant select on b2b search.to...

MySQL使用者許可權管理

使用者許可權管理主要有以下作用 1.可以限制使用者訪問哪些庫 哪些表 2.可以限制使用者對哪些表執行select create delete delete alter等操作 3.可以限制使用者登入的ip或網域名稱 4.可以限制使用者自己的許可權是否可以授權給別的使用者 mysql grant all...