MySQL安全管理

PHPABC Mysql 566 次浏览 , 没有评论

创建用户帐号

create user ben identified by '123456'; 

创建后,MySQL数据库中的user表就新增了一条记录,如下所示:

SegmentFault

重新命名用户帐号

如果想要改变帐号的名字,可以通过下面的命令来达到效果:(使用root权限来修改)

rename user ben to bforta; 

删除用户账户

drop user bforta; 

设置访问权限

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

为了赋予用户帐号的权限,使用 show grants for ,如下所示:

show grants for bforta; 

输出的结果如下所示:

SegmentFault

分析:输出结果显示用户bforta有一个权限usage on “.*”.usage表示根本没有权限,所以,此结果表示在任意数据库和任意表上对任何东西没有权限。

PS:用户定义为user@host MySQL的权限用用户名和主机名结合定义。如果不指定主机名,则使用默认的主机名%(授予用户权限而不管主机名)。

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

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

以下例子给出grant的用法:

grant select on crashcourse.* to bforta; 

此grant允许用户在carshcourse.*(carshcourse数据库中的所有表)上使用select。通过只授权select反问权限,用户bforta对carshcourse数据中的所有数据具有只读反问权限。

撤销权限

与grant的反操作为revoke,用它来撤销特定的权限。

revoke select on carshcourse.* from bforat; 

这条revoke语句取消刚赋予用户bforta的select权限。被撤销的访问权限必须存在,否则会出错。

GRANT和REVOKE可在几个层次上控制访问权限。

  • 整个服务器,使用GRANT ALL和REVOKE ALL;
  • 整个数据库,使用ON database.*;
  • 特定的表,使用ON database.table;
  • 特定的列;
  • 特定的存储过程

对于每个权限的写法可以参考《mysql必知必会》28章。

更改口令

为了更改用户口令,可使用set password语句。新口令必须如下加密:

set password for bforta = password('new 123456');     

set password更新用户口令,新口令必须专递到password()函数进行加密。

set password还可以用来设置你自己的口令:

set password = pasword('new password');     

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Go