MySQL用戶和權限管理
權限類別:
庫級別
表級別
字段級別
管理類
程序類
管理類:
CREATE TEMPORARY TABLES #創建臨時表,臨時表大概有16M空間
CREATE USER #創建用戶
FILE #創建文件
SUPER #高級別管理操作,例如:複製,權限授權等高級權限
SHOW DATABASES #一般而言授權給所有用戶
RELOAD #重新裝載授權表的
SHUTDOWN #是否擁有進程級別關閉的權限
REPLICATION SLAVE #複製的方式連接至服務器端
REPLICATION CLIENT #是否有權限去請求複製主數據庫產生的數據的
LOCK TABLES #鎖表權限
PROCESS #進程權限,列出進程列表。
程序類:
FUNCTION #
PROCEDURE
TRIGGER #觸發器
CREATE, ALTER, DROP, EXCUTE(執行)
庫和表級別:TABLE or DATABASE
ALTER #修改
CREATE
CREATE VIEW
DROP
INDEX
SHOW VIEW
GRANT OPTION:能夠把自己獲得的權限贈經其他用戶一個副本;
數據操作:
SELECT
INSERT
DELETE
UPDATE
字段級別: DELETE沒有字段級別的權限
SELECT(col1,col2,...)
UPDATE(col1,col2,...)
INSERT(col1,col2,...)
所有有限:ALL PRIVILEGES, ALL
元數據數據庫:mysql 該表中保存了相關的用戶和授權
授權表:
db, host, user
columns_priv, tables_priv, procs_priv, proxies_priv
用戶賬號:
'USERNAME'@'HOST':
@'HOST':
主機名;
IP地址或Network;
通配符:
%, _: 172.16.%.%
創建用戶:CREATE USER
CREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password'];
查看用戶獲得的授權:SHOW GRANTS FOR
SHOW GRANTS FOR 'USERNAME'@'HOST'
用戶重命名:RENAME USER
RENAME USER old_user_name TO new_user_name
刪除用戶:DROP USER 'USERNAME'@'HOST'
mysql刷新權限命令:FLUSH PRIVILEGES;
修改密碼:
(1) SET PASSWORD FOR
(2) UPDATE mysql.user SET password=PASSWORD('your_password') WHERE clause;
(3) mysqladmin password
mysqladmin [OPTIONS] command command....
-u, -h, -p
忘記管理員密碼的解決辦法:
(1) 啓動mysqld進程時,爲其使用:--skip-grant-tables --skip-networking
(2) 使用UPDATE命令修改管理員密碼
(3) 關閉mysqld進程,移除上述兩個選項,重啓mysqld;
授權:GRANT
GRANT priv_type[,...] ON [{table|function|procedure}] db.{table|routine} TO 'USERNAME'@'HOST' [IDENTIFIED BY 'password']
[REQUIRE SSL] [WITH with_option]
with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
取消授權:REVOKE
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...