MySQL笔记——用户管理

MySQL服务的默认端口是3306

用户权限管理

关于mysql数据库中的user表:

  user表是MySQL最重要的权限表之一,在用户登录就是匹配user表中的Host、User、Password这三个字段,当三个字段同时匹配时才能允许登陆。

  user表中以priv结尾的字段就是决定了用户的权限,这些字段默认都是N。

关于mysql数据库中的user表和db表的区别:

  同样地,db表是MySQL最重要的权限表之一,它与user表的区别在于,user表的权限管理是针对所有数据库的某个用户权限,

而db表的权限管理是针对某个数据库的某个用户权限。

  例如,user表中某用户的Select_priv字段取值为Y,那么该用户可以查询所有数据库中的表;

如果该用户只设置了查询某数据库或者某数据中某个表的权限,那么该用户在user表中Select_priv字段就为N,而这个SELECT权限则记录在db表中。在db表中该用户的Select_priv字段就为Y。

  所以,用户获取权限是先根据user表,然后再根据db表的。

关于FLUSH PRIVILEGES:

  当启动MySQL后,用户权限表都会加载到内存中,当修改权限表后,并不会更新内存中的权限表,使用FLUSH PRIVILEGES就是为了把权限表重新加载到内存中。从而不用重启MySQL服务,就可以让修改的权限表生效。

新版的的mysql版本已经将创建账户和赋予权限的方式分开了,

  所以新建普通用户时,GRANT语句新建普通用户时不能同时使用IDENTIFIED BY语句设置密码,

  GRANT SELECT ON database*table TO 'user'@'host' IDENTIFIED BY 'password';

  

新建普通用户:

需要使用CREATE USER语句新建普通用户和设置密码,再用GRANT设置新用户的权限。

查看当前登录用户是否有WITH GRANT OPTION权限和CREATE USER权限,

  SHOW GRANTS FOR user;

使用CREATE USER新建用户,

  CREATE USER 'user'@'host' IDENTIFIED BY 'password';

使用GRANT语句设置新用户授权,

  GRANT SELECT ON database.table TO 'user'@'host';

如果只CREATE USER新建了用户,而没有设置用户授权,该用户不能登录mysql。

 

删除普通用户:

DROP USER 'user'@'host';

使用SET语句修改普通用户密码,

  SET PASSWORD FOR 'user'@'host';

使用REVOKE语句收回用户权限,

  REVOKE SELECT ON database.table FROM  'user'@'host';

 

posted @ 2020-08-29 17:35  Wholala  阅读(124)  评论(0编辑  收藏  举报