MySQL学习:
MySQL安全管理
一.访问控制
- MySQL服务器的安全基础
用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。
- 访问控制
需要给用户提供他们所需的访问权,且仅提供他们所需的访问权
- 不要使用root
严肃对待root登录的使用,仅在绝对需要的时候使用它;不要在日常的MYSQL操作中使用root。
二.管理用户
MySQL用户账号和信息存储在名为mysql的MySQL数据库中。一般不需要直接访问mysql数据库和表,但有时需要直接访问。需要直接访问他的时机之一是在需要获得所有用户账号列表时。
MYSQL数据库中有一个名为user的表,它包含所有用户账号。user表有一个名为user的列,它存储用户登录名。
- 1.创建用户账户
IDENTIFIED BY 指定的口令为纯文本,MySQL将在保存到user表之前对其进行加密。
CREATE USER 用户名 IDENTIFIED BY 'PASSWORD';
也可以使用RENAME USER语句来重命名。
RENAME USER 原用户名 TO 新用户名;
- 2.删除用户账户
使用DROP USER语句来删除一个用户账户。
DROP USER 用户名;
- 3.设置访问权限
在创建用户账号后,必须接着分配访问权限。新创建的用户账号没有访问权限。它们能登录MySQL,但不能看到数据,不能执行任何数据库操作。
使用SHOW GRANTS FOR来看到赋予用户账号的权限。
SHOW GRANTS FOR 用户名;
--注意:USAGE表示根本没有权限。
为设置权限,使用GRANTS语句,需要给出以下信息:
- 要授予的权限;
- 被授予访问权限的数据库或库;
- 用户名。
GRANT SELECT ON database.* TO abc;
-- 也可用逗号(,)来进行多次授权
GRANT SELECT,INSERT ON database.TO abc;
此语句表示用户abc可以在database.*(database数据库的所有表)上使用SELECT。
REVOKE SELECT ON database.* FROM abc;
此语句表示撤销特定的权限。
GRANT和REVOKE可在几个层次上控制访问权限
- 整个服务器,使用 GRANT ALL 和 REVOKE ALL;
- 整个数据库,使用 ON database.*;
- 特定的表,使用 ON database.table;
- 特定的列;
- 特定的存储过程。
- 4.更改口令
为了更改用户口令,可使用SET PASSWORD语句。
SET PASSWORD FOR abc = PASSWORD('...');
-- 若不指定用户名,则更新当前登录用户的口令
SET PASSWORD = PASSWORD('...');