本篇文章主要介绍了"mysql的用户管理和权限管理(访问控制)",主要涉及到方面的内容,对于MySql感兴趣的同学可以参考一下:
前言:MySQL服务器的安全基础是:用户应该对他们的需要的数据具有适当的访问权,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权。
例如,我们...
前言:
MySQL服务器的安全基础是:用户应该对他们的需要的数据具有适当的访问权,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权。
例如,我们可能有一下要求:
- 多数用户只能对表进行读和写,但少数用户甚至需要创建和删除表;
- 有些用户需要读表,但不能更新表;
- 有些用户可以往表里添加数据,但是他们不能删除表了的数据;
- 等等;
以上的只是例子,但是有助于说明一个事实,也就是你需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制,管理访问控制需要创建和管理用户账号。
平时我们在学习或测试mysql的时候可能用的都是root的账户,但是在现实世界的日常生活中,在正式的开发过程中,我们要做到,尽量不要使用root用户登录(更linux很像,root就是万能的),因为权限太多了!我们应该创建一系列账户,有的用于管理,有的供用户使用,有的供开发人员使用,等等。
管理用户
MYSQL用户账号和信息存储在名为mysql的数据库中,一般的,我们不需要直接访问mysql数据库和表。我们可以从mysql表中获得所有用户账号列表:
USE mysql;
SELECTuserFROMuser;
返回:

我们用图形界面可能会看得更清楚(这里我用的是Navicat for mysql):

mysql数据库中有个user表,它包含所有的用户账号,user表里面有一个名为user的列,它存储用户登录名,新安装的服务器可能只有一个用户(如这里只有一个root用户)。
在这里我们看到暂时我们只有一个root用户,接下来我们看看如何管理用户:
1、创建用户账号:
为了创建一个新的用户账号,使用CREATE USER语句:
CREATE USER lsgo IDENTIFIED BY '123456';
如上我创建了一个新用户 lsgo ,密码为 123456 ,在创建用户的时候不一定要指定密码(不指定的话则登录密码为空),不过这里用 IDENTIFIED BY 指定了用户密码。
如果你再次列出用户账号,就会看到我们已经创建用户成功了:

用户是我创建的,那么我肯定能够修改他的名字啊!重命名一个用户用 RENAME USER 语句:
RENAME USER lsgo TO zhongjin;

改过来了有木有?感觉挺有趣的。
2、删除用户账号:
删除用户用:
DROP USER zhongjin;
注意:MYSQL 5以来DROP USER删除用户账号和所有相关的账号权限,但是在MYSQL 5以前,DROP USER只能用来删除用户账号,不能删除相关权限。那么在使用旧版的MYSQL,需要先把要删除的用户的权限都删除掉后,再删除用户。如何管理用户权限?看下面。。。