[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'@'%';

 

 

 

 

posted on 2022-04-06 22:34  LeoZhangJing  阅读(75)  评论(0编辑  收藏  举报

导航