用户管理(DBA命令)

创建登录名

CREATE LOGIN 登录名 PASSWORD=’密码’

创建数据库用户名

CREATE USER 用户名 FOR LOGIN 登录名

赋予操作权限

GRANT 操作权限 ON 表名 TO 用户名

回收操作权限

REVOKE 操作权限 ON 表名 TO 用户名

角色:事先定义好的一组权限

https://www.51zxw.net/List.aspx?cid=492

新建用户

CREATE USER username IDENTIFIED BY 'password';

说明:username——你将创建的用户名, password——该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

例如:

create user p361 identified by '123';

--可以登录但是只可以看见一个库 information_schema

授权

mysql>
grant
all privileges                 增删改查的一个或者全部
on dbname.tbname           允许对哪些数据库、数据表
to 'username'               新用户的名字
@'login ip'                  登入的ip
identified by 'password'       密码
with grant option;            有无授权的权利
  1. dbname=*表示所有数据库

  2. tbname=*表示所有表

  3. login ip=%表示任何ip

  4. password 为空,表示不需要密码即可登录

  5. with grant option; 表示该用户还可以授权给其他用户

细粒度授权

首先以 root 用户进入 mysql

然后键入命令:

grant select,insert,update,delete            给增删改查的权利
on *.*                                                       对全部数据库和表
to p361                                                   用户名叫p361
@localhost                                              本机登入
Identified by "123";                                 密码123

如果希望该用户能够在任何机器上登陆 mysql,则将 localhost 改为 "%"。

粗粒度授权

测试用户一般使用该命令授权,

GRANT ALL PRIVILEGES
ON *.*
TO 'p361'
@'%'
/Identified by "123";

注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT ALL PRIVILEGES
ON *.*
TO 'p361'
@'%'
Identified by "123"
WITH GRANT OPTION;

ALL PRIVILEGES和给增删改查4个权限有啥区别?

privileges 包括:

1)alter:修改数据库的表

  1. create:创建新的数据库或表

  2. delete:删除表数据

  3. drop:删除数据库/表

  4. index:创建/删除索引

  5. insert:添加表数据

  6. select:查询表数据

  7. update:更新表数据

  8. all:允许任何操作

  9. usage:只允许登录

也就是说在grant后面可以跟这些字段

回收权限

revoke privileges on dbname[.tbname] from username;

revoke all privileges

on *.*

from p361;

use mysql

select * from user

进入 mysql 库中

修改密码;

update user

set password = password('qwe')

where user = 'p646';

刷新权限;

flush privileges


⬅️ 21-视图 🏠 00-数据库 ➡️ 23-存储引擎