MySQL8管理系列之四:用户和权限管理

用户和权限管理实际上属于安全范畴。

在当前安全形式越来越严竣的情况下,做好数据库的分用户、分权限管理是非常有必要的。

一、原则

1、root账号绝对禁止允许任何IP都可以访问,也就是说,其IP不能用%。建议root账号只设为允许本机登录(当然前提是应用与数据是分离的)

2、应用账号和管理账号要分离;绝对不要使用root账号作为应用账号。

3、应用账号权限最小化;管理账号权限分离化。

4、在数据库服务器的管理工具中,不要保存密码。

二、账号的建立

以下描述均基于Windows下的管理,因此不使用命令方式。

账号的建立与mysql的版本有关,不同的服务器版本其建立账号的界面也不同,其实就是选项会有不同。

1、navicat 11的账号管理(mysql 5)

(1)建立账号界面

建议:初始密码就应使用强密码格式,即大小写+数字+特殊字符,长度不小于12位。

上图中的主机地址:建议应用账号只允许两个IP访问,一是数据库服务器本机,也就是localhost;另一个是应用的IP。

(2)服务器权限

对应用账号不要给服务器权限。

(3)权限

这个标签的权限概念是数据库权限,即允许访问哪些数据库,哪些表或其它对象。

 默认新建的账号是没有任务数据库权限的,如下图:

 点击“添加权限”按钮,打开添加权限的界面:

 在上图中,选择要授权的数据库(左侧列表),然后在右侧选择权限,打勾即表示具有该权限。

各个权限说明:

上图中的所有权限名称,都是针对数据库的(不是针对服务器的,针对服务器的也有类似的权限名称)

--------------------------------------------------------

select:表或视图的查询权限,这个是基本权限。

insert:插入表数据的权限;

update:更新表数据的权限;

delete:删除表数据的权限;

references:

create:创建表的权限;

drop:删除表的权限;

alter:修改表的权限;

index:索引权限;

trigger:触发器权限;

createView:创建视图的权限;

show view:显示视图的权限;

Grant:授权的权限,即可以再给其它用户授权。

excute:执行权限。

alter routine:修改路由的权限;

create routine:创建路由的权限;

create Tmp. tables:创建临时表的权限;

lock tables:锁表的权限;

event:创建事件的权限。

----------------------------------------------------------

 如果要对不同的表或对象授予细分权限,可以再点开上图左侧的树,对对象进行授权,操作方式一样。

不同的对象,可授予的权限不同,如下图是表的可授权类别:

 下图是视图的可授权类别:

2、Navicat 15的账号管理(mysql 8)

(1)账号创建

由于mysql 8 加强了权限机制,因此在管理账号时,有密码插件的选项。

 上图中,创建账号时可以选择密码插件,和密码过期策略。

其中:密码过期策略的几个选项说明如下:

--------------------------------------------------------

  1. Default:默认策略。即使用mysql的全局密码过期策略。
  2. Immediate:立即过期,该密码必须立即修改后才能执行其它操作。
  3. Integerval:若干天后过期。
  4. Never:永不过期

--------------------------------------------------------- 

按一些安全要求,应当设置为interval类型,或者在服务器层面设置好全局的策略,则此处可以不再考虑。

(2)其它权限设置过程与上面的相同,此处不再描述。

3、不同用户

(1)在mysql中,账号名可以相同,但相同的账号名必须是不同的主机IP。

这样,在mysql中,root@%和root@192.198.1.1是两个不同的账号。

(2)由于 root@% 和 root@192.198.1.1是两个不同的账号,因此它们的密码可以是不同的。

(3)mysql不支持同一个账号指定多个ip,即不能建立root@192.168.1.1,192.168.1.2的账号。

原文地址:https://www.cnblogs.com/wuxs2008/p/14770891.html