MySQL安全管理

一、访问控制

? MySQL服务器保证安全的基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。这样就可以防止用户对数据库的恶意操作和误操作。

二、管理用户

1. 创建用户账号

-- 创建了一个新用户账户。用户名为ben,密码为p@$$wOrd
create user ben identified by ‘p@$$wOrd‘;
-- 重命名一个用户账户。将ben重命名为bforta
rename user ben to bforta;

2. 删除用户账户

-- 删除用户账户以及该账号所拥有的权限
drop user bforta;

3. 设置访问权限

? 在创建用户账户后,必须接着分配访问权限。新创建的用户账户没有访问权限,它们能登录MySQL,但不能看到数据,也不能执行任何数据库操作。

? 为了设置权限,需要使用grant语句。grant要求你至少给出如下信息:

  • 要授予的权限;
  • 被授予访问权限的数据库或表;
  • 用户名。

举例:

grant select on crashcourse.* to bforta;
-- 此grant语句允许用户bforta在crashcourse.*(crashcourse数据库的所有表)上使用select语句。
revoke select on crashcourse.* from bforta;
-- 这条revoke语句撤销刚刚赋予用户bforta的select访问权限。

? grant和revoke可在几个层次上控制访问权限:

  • 整个服务器,使用grant all和revoke all;
  • 整个数据库,使用on database.*;
  • 特定的表,使用on database.table;
  • 特定的列;
  • 特定的存储过程。
-- 简化多次授权。可通过列出各权限并用逗号隔开,将多条grant语句串在一起。
grant select, insert on crashcourse.* to bforta;

4. 更改密码

set password for bforta = password(‘n3w p@$$wOrd‘);
-- 新密码必须传到password()函数进行加密。
set password = password(‘n3w p@$$wOrd‘);
-- 在不指定用户名时,set password更新当前登录用户的密码。

MySQL安全管理

上一篇:ios8 UITableView设置 setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法


下一篇:MySQL添加外键报错 - referencing column 'xx' and referenced column 'xx' in foreign key constraint 'xx' are incompatible