MySQL高級 第2章MySql的用戶和權限管理
1. Mysql的用戶管理
1.1 相關命令
命令 |
描述 |
備注 |
create user zhang3 identified by '123123'; |
創建名稱為zhang3的用戶,密碼設為123123; |
|
select host,user,password,select_priv,insert_priv,drop_priv from mysql.user; |
查看用戶和權限的相關信息 |
|
set password =password('123456') |
修改當前用戶的密碼 |
|
update mysql.user set password=password('123456') where user='li4'; |
修改其他用戶的密碼 |
所有通過user表的修改,必須用flush privileges;命令才能生效 |
update mysql.user set user='li4' where user='wang5'; |
修改用戶名 |
所有通過user表的修改,必須用flush privileges;命令才能生效 |
drop user li4 |
刪除用戶 |
不要通過delete from ?user u where user='li4' 進行刪除,系統會有殘留信息保留。 |
1.2 示例說明
host?:表示連接類型
????????% 表示所有遠程通過 TCP方式的連接
????????IP 地址 如 (192.168.1.2,127.0.0.1) 通過制定ip地址進行的TCP方式的連接
???????機器名 ??通過制定i網絡中的機器名進行的TCP方式的連接
????????::1 ??IPv6的本地ip地址 ?等同于IPv4的 127.0.0.1
????????localhost 本地方式通過命令行方式的連接 ,比如mysql -u xxx -p 123xxx 方式的連接。
??user:表示用戶名
???????同一用戶通過不同方式鏈接的權限是不一樣的。
??password:密碼
???????所有密碼串通過 password(明文字符串) 生成的密文字符串。加密算法為MYSQLSHA1 ,不可逆 。
????????mysql 5.7 的密碼保存到 authentication_string 字段中不再使用password 字段。
??select_priv , insert_priv等
????????為該用戶所擁有的權限。
2. Mysql的權限管理
2.1 授予權限
命令 |
描述 |
grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’ |
該權限如果發現沒有該用戶,則會直接新建一個用戶。 示例: grant select,insert,delete,drop on atguigudb.* to li4@localhost ?; 給li4用戶用本地命令行方式下,授予atguigudb這個庫下的所有表的插刪改查的權限。
|
grant all privileges on *.* to joe@'%' ?identified by '123'; |
授予通過網絡方式登錄的的joe用戶 ,對所有庫所有表的全部權限,密碼設為123. |
2.2 收回權限
命令 |
描述 |
備注 |
show grants |
查看當前用戶權限 |
|
revoke ?[權限1,權限2,…權限n]?on 庫名.表名 ?from ?用戶名@用戶地址 ; |
收回權限命令 |
|
REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost; |
收回全庫全表的所有權限 |
|
REVOKE select,insert,update,delete ON mysql.* FROM joe@localhost; |
收回mysql庫下的所有表的插刪改查權限 |
|
權限收回后,必須用戶重新登錄后,才能生效。
2.3 查看權限
命令 |
描述 |
備注 |
show grants; |
查看當前用戶權限 |
|
select ?* from user ; |
|
|
|
|
? |