MySQL数据库之用户和权限管理
1、MySQL用户管理
相关命令
命令 | 说明 | 备注 |
---|---|---|
create user htzw identified by ‘ABC.123456’ | 创建名称为htzw的用户,密码为ABC.123456 | |
select host,user,password,select_priv,insert_priv,drop_priv from mysql.user; | 查看用户和权限的相关信息 | |
setpassword=password(‘123456’) | 修改当前用户的密码 | |
update mysql.user set password = password(‘123456’) where user=‘htzw’ | 修改其他用户的密码 | 所有通过user表的修改,必须用flush privileges命令才能生效 |
update mysql.user set user=‘zhongwei’ where user=‘htzw’; | 修改用户名 | 所有通过user表的修改,必须用flush privileges命令才能生效 |
drop user zhongwei | 删除用户 | 不要通过delete from user where user='zhongwei’进行删除,系统会有残留信息保留 |
示例说明
查看用户和权限的相关信息
host:表示连接类型
- %表示所有远程通过TCP方式的连接
- IP地址(如127.0.0.1)通过指定IP地址进行的TCP方式的连接
- 机器名:通过指定网络中的机器名进行的TCP方式的连接
- ::1 IPv6的本地IP地址,等同于IPv4的127.0.0.1
- localhost 本地房市通过命令行方式的连接,比如mysql -u xxx -p方式的连接
user:表示用户名
同一用户通过不同方式链接的权限是不一样的
password:密码
- 所有密码串通过password(明文字符串)生成的密文字符串。加密算法为MYSQLSHA1,
不可逆
- MySQL5.7的密码保存到authentication_string字段中不再使用password字段
select_priv,insert_priv等
为该用户所拥有的权限
2、权限管理
授予权限
命令 | 说明 |
---|---|
grant 权限1,权限2……权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’ | 该权限如果发现没有该用户,则会直接新建一个用户 |
grant all privileges on *.* to htzw@’%’ identified by ‘123456’; | 授予通过网络方式登录的htzw用户,对所有库所有表的全部权限,密码为123456 |
grat select,insert,delete,frop on poss.* to htzw@localhost; | 给htzw用户用本地命令行方式下,授予poss这个库下的所有表的CRUD权限 |
收回权限
命令 | 说明 | 备注 |
---|---|---|
show grants | 查看当前用户权限 | |
revoke [权限1,权限2……权限n] on 库名.表名 from 用户名@用户地址; | 收回权限命令 | |
revoke all privileges on mysql.* from htzw@localhost; | 收回全库权标的所有权限 | |
revoke select,insert,update,delete on mysql.* from htzw@localhost; | 收回mysql库下的所有表的CRUD |
权限收回后,必须用户重新登录后,才能生效
查看权限
- show grants; 查看当前用户权限
- select * from user;