1. 查看權限
-- 如果host值不是%, 就要加上host值,下面查看bkpuser用戶權限(6個權限, 限本地連接) SHOW GRANTS FOR bkpuser@localhost;
-- 如果host值是%, 就只要輸入用戶名,下面查看z1用戶權限(顯示所有權限,不限ip連接) SHOW GRANTS FOR z1;
2. 更改權限
可以進行權限的新增和回收,使用grant來新增,使用revoke來回收。在前面52章節中也有介紹revoke的使用。 也可以直接對user,db,tables_priv,columns_prive 四個權限表進行更新,這個在上篇中也有講到。
-- 例1: CREATE USER 'z2'@'localhost' IDENTIFIED BY '123456'; -- 賦給z2@localhost用戶在所有數據庫上的所有表的select 權限 GRANT SELECT ON *.* TO 'z2'@'localhost' -- 查看權限 SHOW GRANTS FOR z2@localhost;
--例2: 使用grant 來新增權限,新增一個insert權限,並和已有的select 權限進行合並 GRANT SELECT,INSERT ON *.* TO 'z2'@'localhost'
--例3: 使用revoke語句可以回收已經賦予的權限 -- 語法如下: REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...
-- 回收insert權限,注意像usage登錄權限是不能回收的。因為revoke並不能刪除用戶 REVOKE INSERT ON *.* FROM 'z2'@'localhost';
更多revoke語法的了解,請參考官方文檔:https://dev.mysql.com/doc/refman/5.7/en/revoke.html
3. 修改密碼
修改密碼有四種方法, (1)是使用mysqladmin命令,(2)是執行set password,(3)是使用grant。(4)是修改 user表。
-- (1)使用mysqladmin來修改,如果host是%,則-h 的host為空 [root@hsr ~]# mysqladmin -u z1 -h '' password '123456' -p Enter password: mysqladmin: [Warning] Using a password on the command line interface can be insecure. Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
翻譯是:在命令行界面上使用密碼是不安全的。警告:由於密碼將以純文本形式發送到服務器,因此使用ssl連接以確保密碼安全。
修改密碼后驗證:使用客戶端sqlyog來連接時,原有密碼654321連接錯誤,改成123456 新密碼連接成功。
-- (2) set password SET PASSWORD FOR 'z1'@'%'=PASSWORD('654321') Warning Code : 1287 'SET PASSWORD FOR <user> = PASSWORD('<plaintext_password>')' is deprecated and will be removed in a future release.
Please use SET PASSWORD FOR <user> = '<plaintext_password>' instead
翻譯是:1 個警告,該方法已棄用,將在將來的版本中刪除
修改密碼后驗證:使用客戶端sqlyog來連接時,密碼改成654321連接成功
-- (3) 使用grant來修改密碼 GRANT USAGE ON *.* TO 'z1'@'%' IDENTIFIED BY '123456' Using GRANT statement to modify existing user's properties other than privileges is deprecated and will be removed in future release.
Use ALTER USER statement for this operation.
翻譯是:使用GRANT語句修改現有用戶的屬性而不是特權是不贊成的,並將在以后的版本中刪除。對這個操作使用ALTER USER語句。
修改密碼后驗證:使用客戶端sqlyog來連接時,密碼改成123456連接成功。
--(4) 修改 user表 UPDATE mysql.`user` SET authentication_string=PASSWORD('654321') WHERE `Host`='%' AND `User`='z1' Warning Code : 1681 'PASSWORD' is deprecated and will be removed in a future release. -- 記住要刷新才生效。 FLUSH PRIVILEGES
修改密碼后驗證:使用客戶端sqlyog來連接時,密碼改成654321連接成功。
修改密碼最后總結:2,4 案例在未來版本中會去掉,3案例在未來版本中使用alter user。 以后推薦使用mysqladmin和alter user 來修改密碼。
4. 刪除賬號
要徹底刪除賬號,同樣也有兩種方法:(1) drop user命令 (2) 修改權限表。
--例如刪除z2用戶 DROP USER 'z2'@'localhost' -- 查看權限 SHOW GRANTS FOR z2@localhost;
查看權限顯示:There is no such grant defined for user 'z2' on host 'localhost'。再查看user表也沒有了z2用戶的信息了。第二種方法刪除,直接刪除user表的記錄就行了,不在演示。