论坛首页 综合技术论坛

MySql的用户以及权限

浏览 2305 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-14   最后修改:2011-06-18
用户

为了唯一确定一个用户,用户=user+host+password.
user不指定的话,为匿名用户。
hostname可以用%匹配所有host.
其中,password可以不设置,但是从安全的角度想,所有的user还是设置一个密码比较好。

权限

MySql中所有的操作都有对应的权限,权限存储在mysql数据库中,系统用作检查的ACL是在server启动时载入内存的。


权限检查过程

1 连接时对用户检查。
主要是检查该用户是否可以连接server。
有可能有多个现有条目和用户匹配,系统会对现有条目排序后采用第一个匹配的用户。
排序的规则为先Host,后User,其中,指定的host比通用的%靠前,指定的user比匿名用户靠前。

+-----------+----------+-
| Host      | User     | ...
+-----------+----------+-
| %         | root     | ...
| %         | jeffrey  | ...
| localhost | root     | ...
| localhost |          | ...
+-----------+----------+-
排好后为
+-----------+----------+-
| Host      | User     | ...
+-----------+----------+-
| localhost | root     | ...
| localhost |          | ...
| %         | jeffrey  | ...
| %         | root     | ...
+-----------+----------+-

2 操作时对操作的用户权限进行检查
server分析请求的操作,检查ACL。


权限何时生效

系统用作检查的ACL是在server启动时载入内存的。
1 用GRANT, REVOKE等命令修改后内存也被影响。
2 直接修改底层的mysql里面和权限相关的表,内存的ACL不受影响,可以用FLUSH PRIVILEGES重新载入。

有用的命令

查看权限 SHOW GRANTS FOR user@host ;
新增用户 CREATE USER
设置密码 SET PASSWORD
设置权限 GRANT
取消权限 REVOKE
查看当前用户 SELECT CURRENT_USER();
重新载入权限 FLUSH PRIVILEGES
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics