1. 程式人生 > 其它 >[MySQL & Python] 09. 賬戶與授權管理

[MySQL & Python] 09. 賬戶與授權管理

MySQL中支援建立多個賬戶,並給每個賬戶分配許可權。

 

使用者資訊存放在mysql庫的user表中。

user:使用者名稱

authentication_string:密碼

host:允許使用者連線資料庫的IP地址。localhost等於只允許本地連線。


mysql> select user, authentication_string, host from mysql.user;
+---------------+-------------------------------------------+-----------+
| user         | authentication_string                     | host     |
+---------------+-------------------------------------------+-----------+
| root         | *932E3650DE19D2003223785C8DA15555E69A3BDB | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| mysql.sys     | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
+---------------+-------------------------------------------+-----------+

 

建立、更改和刪除使用者

  • 建立與刪除使用者

create user 使用者名稱@連線IP地址 identified by 密碼

drop user 使用者名稱@連線IP地址

 

使用者名稱: 可以使用 ' ' 引起來,也可以不用,建議使用。

連線IP地址可以是: 127.0.0.1 / '10.138.%.%' 或者 '%' 。使用%的時候,需要將IP地址使用' ' 括起來。

-- 建立使用者
mysql> create user 'leozhang'@'%' identified by 'root123';
Query OK, 0 rows affected (0.00 sec)

-- 刪除使用者
mysql> drop user 'leozhang'@'%';
Query OK, 0 rows affected (0.00 sec)

 

  • 更改使用者

rename 使用者@IP to 新使用者@新IP

mysql> rename user 'lzhang'@'10.138.1.1' to 'leozhang'@'10.138.121.1'

 

  • 修改密碼

set password for 使用者名稱@IP地址 = Password(新密碼)

mysql> set password for 'leozhang' = password('leozhang');

 

授權管理

  • 分配許可權

grant 許可權 on 資料庫.表 to '使用者'@IP地址;

資料庫.表 可以是:

資料庫名.表名

資料庫.*

資料庫名.儲存過程名

*.*

flush privileges ; 將許可權讀入記憶體來立即生效

 

-- 給予所有庫的所有表的所有許可權
mysql> grant all privileges on *.* to 'leozhang'@'%';

-- 給予day26db庫中所有表的所有許可權
mysql> grant all privileges on day26db.* to 'leozhang'@'%';

-- 給予day26db庫中info表的select, insert許可權
mysql> grant select, insert on day26db.info to 'leozhang'@'%';

-- 立即生效許可權的更改
mysql> flush privileges;

 

  • 檢視許可權

show grants for 使用者名稱@IP地址;

mysql> show grants for 'leozhang'@'%';
+------------------------------------------------------------+
| Grants for leozhang@%                                     |
+------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'leozhang'@'%'             |
| GRANT ALL PRIVILEGES ON `day26db`.* TO 'leozhang'@'%'     |
| GRANT SELECT, INSERT ON `day26db`.`info` TO 'leozhang'@'%' |
+------------------------------------------------------------+

 

  • 取消許可權

revoke 許可權 on 資料庫.表 from 使用者名稱@IP地址 ;

mysql> revoke all privileges on day26db.* from 'leozhang'@'%';