本篇文章主要介绍了"mysql的用户管理和权限管理(访问控制)",主要涉及到方面的内容,对于MySql感兴趣的同学可以参考一下:
前言:MySQL服务器的安全基础是:用户应该对他们的需要的数据具有适当的访问权,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权。
例如,我们...
3、设置访问权限:
在创建完用户之后,必须接着分配访问权限,新创建的用户账号是没有访问权限的,他们能够登录MYSQL,但是不能看到数据,不能执行任何数据库的操作。
为了能够看到赋予给用户的权限,可以使用SHOW GRANTS FOR语句:
SHOW GRANTS FOR zhongjin;

输出结果显示用户zhongjin有一个权限 USAGE ON .。USAGE其实表示“根本没有权限”(尽管这很不直观),因此,此结果表示在任意数据库和任意表上对任何东西没有权限(*表示任意,某个数据库的某个表用: 数据库名.表名)
还有 zhongjin@% 是什么鬼?用户名定义为 user@root MySQL的权限用用户名和主机名结合定义,如果不使用主机名,则使用默认的主机名 %(授予用户访问权限而不管主机名)。

为了给用户授予权限,我们可以用 GRANT 语句,GRANT要求你至少给出以下几点信息:
1. 要授予的权限;
2. 倍授予访问权限的数据库或表;
3. 用户名(给谁分配);
例子:
GRANT SELECT ON test.* TO zhongjin;
此GRANT允许用户在test.*(test数据库下的任意表上)使用SELECT。通过只授予SELECT访问权限,用户zhongjin对test数据库只有只读的访问权限。
SHOW GRANTS FOR zhongjin;
返回:

每个GRANT添加或更新用户的一个权限,但是怎么给用户取消某个权限呢?我们就要用到REVOKE语句了。REVOKE语句撤销特定的权限:
REVOKE SELECT ON test.* FROM zhongjin;
结果发现:

之前的SELECT权限没有了。证明REVOKE语句起作用了。
注意:被撤销的访问权限必须存在,否则会出错。
GRANT 和 REVOKE 可在几个层次上控制访问权限:
- 在整个服务器,使用 GRANT ALL 和 REVOKE ALL;
- 在整个数据库,使用 ON database.*;
- 特定的表,使用 ON database.table;
- 特定的列;
- 特定的存储过程。
可以管理的权限当然有一大堆,大家可以访问
http://blog.chinaunix.net/uid-167175-id-3472332.html
了解更多的权限列表。
4、更改用户密码:
为了更改用户的密码,可使用 SET PASSWORD 语句:
SET PASSWORD FOR zhongjin = Password('456789');
SET PASSWORD 更新用户密码,新密码必须传到Password()函数中进行加密。
SET PASSWORD 还可以用来设置你自己的密码: