共計 3016 個字符,預計需要花費 8 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 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 用戶和權限的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!