MySQL

MySQL 知识量:16 - 40 - 165

15.1 用户管理><

访问控制- 15.1.1 -

MySQL服务器的安全基础是:用户应该对它们需要的数据具有适当的访问权,既不能多也不能少。具体包括以下情形:

  • 多数用户只需要对表进行读和写,少数用户需要能创建和删除表。

  • 某些用户需要读表,但不需要更新表。

  • 你可能想允许用户添加数据,但不允许他们删除数据。

  • 管理员可能需要处理用户账号的权限,但多数用户不需要。

  • 你可能想让用户通过存储过程访问数据,但不允许他们直接访问数据。

  • 你可能想根据用户登录的地点限制对某些功能的访问。

仅给用户提供所需的访问权就是所谓的访问控制。要进行访问控制,需要创建和管理用户账号。

MySQL有一个超级管理员账号,即root账号,它对整个MySQL服务器具有完全的控制权,在学习和练习环境中,可以使用root账号进行操作,但是,在生产环境中,绝对不要直接使用root账号,安全起见,应该创建一系列账号,提供给目标用户使用。

通过保证用户不能执行他们不应该执行的SQL语句,访问控制有助于避免因误操作造成的数据损坏。

查看用户账号- 15.1.2 -

MySQL用户账号和信息存储在名为mysql的MySQL数据库中,如果要获得所有用户账号列表信息时,可以直接查询该表信息。

use mysql;
select user from user;

查询的结果类似于:

+-----------+
| user      |
+-----------+
| mysql.sys |
| root      |
+-----------+

创建用户账号- 15.1.3 -

可以使用create user语句来创建新用户账号,例如:

create user bob identified by 'password';

以上SQL语句中,通过create user语句创建了一个新用户bob,并设置了登录口令“password”。当然,口令不是必须在这里给出。

再次查看用户账号信息,结果为:

+-----------+
| user      |
+-----------+
| bob       |
| mysql.sys |
| root      |
+-----------+

通过identified by指定的口令为纯文本,MySQL在将口令保存到user表之前会对其进行加密。

重命名账号- 15.1.4 -

要重命名用户账号,可以使用rename user语句,例如:

rename user bob to jame;

再次查看用户账号信息,结果为:

+-----------+
| user      |
+-----------+
| jame      |
| mysql.sys |
| root      |
+-----------+

注意:在MySQL5或之后的版本才开始支持rename user语句。

删除用户账号- 15.1.5 -

使用drop user语句来删除一个用户账号(以及相关的权限)。例如:

drop user jame;

注意:在MySQL5之前,drop user语句只能删除用户账号,但不能删除相关的权限。