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 ;