您好,登錄后才能下訂單哦!
小編給大家分享一下mysql用戶和權限的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
用戶的創建
方法一:
create user lxm;
set password for lxm=PASSWORD('123456');
alter user lxm password expire; 設置用戶密碼過期。
select user, host, password from mysql.user; 查詢賬號信息
方法二:
在授權時會默然創建用戶
grant select on test.table1 to lxm@192.168.2.154 identified by '123456';
方法三:
直接修改user表,修改完后記得flush privileges。
insert into mysql.user(host,user,password,ssl_cipher,x509_issuer,x509_subject) values ('192.168.2.154','lxm','123456','','','');
update mysql.user set password=password('lxm') where user='lxm' and host='%'; 修改用戶密碼
用戶的刪除:
drop user lxm@192.168.2.154, lxm2@192.168.2.154, lxm3@192.168.2.154; 可以一次刪除多個用戶
drop user不會自動中止已連接的用戶會話。
=========================================================================
權限
mysql中權限的粒度由粗到細分別是全局,數據庫,表,列,程序。可以用一句話來概括:分配某個用戶從某臺機器連接進來訪問某個數據庫下的某張表的某個列的某部分記錄的權限。
1、全局級別
與全局相關的權限信息記錄在mysql.user表中。這個全局權限不是指擁有所有的權限,它具體指的是擁有該MYSQL服務器所有數據庫對象的權限。
2、數據庫級別
與數據庫級別的權限信息記錄在mysql.db表中。
3、表對象級別
表對象的授權信息記錄在mysql.tables_priv字典表中。
4、列級別
列級權限是mysql權限體系中的最細粒度。權限信息記錄在mysql.column_priv表中。
grant select (col1) on test.table1 to lxm; 授予用戶lxm查詢test.table1表中col1列的權限。
grant insert (col1) on test.table1 to lxm; 授予用戶lxm向test.table1表中col1列添加值的權限。
5、程序
mysql中的程序指procedure和function兩類對象。對已存在的程序,可以授予執行(EXECUTE),修改(ALTER ROUTINE),授予(GRANT)權限。這些權限信息記錄在表mysql.procs_priv中。
查詢用戶權限:
show grants for lxm@’192.168.2.154; 查詢用戶lxm所擁有的權限
show grants; 查詢當前用戶的所有權限
回收權限:
revoke select on test.table1 from lxm@192.168.2.154;
revoke all privileges,grant option from user; 回收用戶的所有權限
權限變更何時生效:
如果是用mysql提供的命令來執行修改,比如GRANT,REVOKE,SET PASSWORD,RENAME USER,則權限變更立即生效。
如果是手動修改字典表的方式,比如INSERT,UPDATE,DELETE,則需要重啟mysql服務,或者手動觸發授權表(GRANT TABLES)重新裝載到內存中,即flush privileges。
權限變更對客戶端的影響:
表或者列粒度的權限改變將在客戶端執行下一次操作時生效。
數據庫級別的權限將在客戶端切換數據庫時生效。
全局權限和密碼修改,當客戶端下一次連接時生效。
在LINUX/UNIX系統下,使用mysql命令行工具執行的所有操作,都會被記錄到一個名為.mysql_history的文件中。該文件默認保存在當前用戶的根目錄下。可以通過修改參數MYSQL_HISTFILE來更改路徑。
權限類型列表:
create user 可以執行create user,drop user,rename user,revoke all privileges語句
create 創建數據庫或者表對象 *擁有create權限的用戶只能創建和查看自己新建的數據庫或表對象,而無法刪除。
create view 可以創建/修改視圖
select 查找
insert 執行insert語句
update 允許執行update操作
delete 可以執行delete語句
drop 可以刪除表/視圖/數據庫
alter 執行alter table操作
index 創建或者刪除索引
create tablespace 創建,修改或者刪除表空間以及日志文件組
create temporary tables 通過執行create temporary table語句創建臨時表
lock tables 對擁有select權限的表對象執行lock tables
trigger 允許創建或者刪除觸發器
create routine 創建存儲過程和函數
alter routine 修改或者刪除存儲過程和函數
execute 允許用戶可以執行存儲程序
replication client 允許用戶連接復制環境中的master/slave
replication slave 允許復制環境的slave端從master端讀取數據
grant option 允許將授予的權限再由該用戶授予給其他用戶
all privileges 授予所有除grant option外的權限
usage 指沒有權限(no privileges),但是還是可以登錄的。該權限是默認給予的,無法被回收。
event 允許使用event對象
file 允許用戶讀寫文件
proxy 可以使用proxy
注:all privileges和grant option兩類權限比較特殊,在授予和回收時都不能與其他權限同時操作。
max_queries_per_hour 用戶每小時執行的查詢語句數量
max_update_per_hour 用戶每小時執行的更新語句數量
max_connections_per_hour 用戶每小時可以連接的最大次數
max_user_connections 用戶同時連接服務器的數量
其他:
在表級對象你可以賦予的權限有select、insert、update、delete、create、drop、grant option、index、以及alter。
execution、file、process、reload、replication client、replication slave,show databases,shutdown,以及super這些權限都是管理權限,只能被全局賦予,即用on *.*的方式。
以上是“mysql用戶和權限的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。