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';