MySQL的用戶管理mysql
用戶帳號格式sql
username@hostname
查看幫助數據庫
MySQL > help contents; MySQL > help account management;
帳號管理命令(此時權限頗有限)
bash
create user drop user rename user set password
權限管理命令:ide
grant revoke
查看建立用戶命令幫助函數
MySQL> help create user; CREATE USER username@hostname [ IDENTIFIED BY [PASSWORD] 'password' ] 主機也能夠使用通配符:testuser@'172.16.100.1__'(172.16.100.100-172.16.100.199) (兩個下劃線) 還能夠使用%:testuser@'172.16.%.%' 查看用戶可以使用的權限:show grants for username@'hostname'
重命名 加密
MySQL > help rename user RENAME USER old_user TO new_user [, old_user TO new_user] ... mysql > RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1';
爲用戶設置密碼spa
MySQL > help set password; SET PASSWORD [FOR user] = { PASSWORD('cleartext password') } MySQL > set password for testuser@'172.16.%.%' = password('123456'); 調用password函數
MySQL的權限類型:線程
庫級別3d
表級別
字段級別
管理類
程序類(存儲過程,觸發器,存儲函數,時間調度器)
管理類權限
create temporary tables 臨時表
create user
file 容許用戶讀或者寫某些文件
lock tables 添加顯式鎖
process:查看用戶的線程
reload:至關於執行flush和reset
replication client 查詢有哪些複製客戶端
replication slave 賦予用戶複製權限
show databases
shutdown
super
數據庫訪問權限(庫級別和表級別)
alter:modify tables with alter tables
alter routine 修改存儲歷程
create
create routine 存儲過程,存儲函數
create view
delete
drop
execute 是否可以執行存儲過程,或存儲函數
grant option 將本身的權限複製給別的用戶
index 索引
show view
數據操做類權限(表級別)
select
insert
update
delete
字段級別:
select(col1,....)
update(col1,....)
insert(col1,....)
全部權限
ALL [privileges]
查看幫助
MySQL > help GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user_specification [, user_specification] ... [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}] [WITH with_option ...] object_type:(默認爲表) TABLE | FUNCTION | PROCEDURE priv_level: * | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_name user_specification: user [ IDENTIFIED BY [PASSWORD] 'password' | IDENTIFIED WITH auth_plugin [AS 'auth_string'] ] //能夠實現受權並添加密碼 ssl_option: SSL ... with_option: GRANT OPTION 轉贈給別人 | MAX_QUERIES_PER_HOUR count 每小時容許執行的最大查詢次數 | MAX_UPDATES_PER_HOUR count 每小時容許執行的最大更新次數 | MAX_CONNECTIONS_PER_HOUR count 每小時容許執行的最大鏈接次數 | MAX_USER_CONNECTIONS count 使用同一個帳號能夠同時鏈接的次數
實例
給testuser用戶受權 MySQL > grant create on testdb.* to testuser@'192.168.139.1__';
此時testuser只能建立testdb庫
查看本身的權限 MySQL > show grants for testuser@'192.168.139.1__';
此時能夠在該數據庫下建立表,可是因爲沒有select和drop權限,
因此不能查看錶數據及結構,不能刪除表
給testuser用戶刪除表的權限 MySQL > grant drop on testdb.* to testuser@'192.168.139.1__'; 查看權限 MySQL > show grants for testuser@'192.168.139.1__';
給testuser用戶增、刪、查、改權限 MySQL > grant select,insert,update,delete on testdb.* to testuser@'192.168.139.1__'; 查看權限 MySQL > show grants for testuser@'192.168.139.1__';
注意:要想建立庫應該對全部表都有權限
收回受權
MySQL > help REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ... REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ... REVOKE PROXY ON user FROM user [, user] ...
例子:
MySQL > revoke insert,select on testdb.* from testuser@'192.168.139.1__'; 查看權限 MySQL > show grants for testuser@'192.168.139.1__';
幾個跟用戶受權相關的表:(在mysql庫中)
db:庫級別的權限 host:主機級別權限,已廢棄 tables_priv:表級別權限 columns_priv:列級別的權限 procs_priv:存儲過程和存儲函數相關的權限 proxies_priv:代理用戶權限·
MySQL的每一次操做幾乎都要涉及權限管理檢查,因此把受權表載入內存中(爲了提高速度)