`
king520
  • 浏览: 167835 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
文章分类
社区版块
存档分类
最新评论

MySQL用户管理

 
阅读更多

文章来源于:

http://hi.baidu.com/panhuilin/blog/item/68439c4bacc9e3f382025cba.html

一、创建用户并分配权限:
SQL语句:
-------------------------------------------------------------------------
GRANT privileges [(columns)]
ON item
TO 'user_name'@'host_name' [IDENTIFIED BY 'password']
[REQUIRE ssl_options]
[WITH [GRANT OPTION | limit_option]]
-------------------------------------------------------------------------
1) privileges子句
分成三种类型的访问权限: 管理权限(如: SHUTDOWN, FILE, RELOAD等)
数据库等的操作权限(如: SELECT, UPDATE, INSERT,DELETE等)
特殊权限: ALL代表除GRANT外的所有权限,USAGE代表无权限

2) columns 指定数据列的访问权限( 如: SELECT( newsId, title) )

3) item 指定有关权限的作用范围:
*--当未指定数据库时:所有数据库的所有表。指定数据库当前数据库所有表,
*.*--所有数据库中的所有表
dbName.*--指定数据库的所有表
dbName.tbName--指定数据库指定表
tbName默认数据库的指定表

4) user_name新用户的用户名

5) host_name主机名--'%'表示所有的主机( 'user_name'@'%' = 'user_name')。在host_name 中可以有通配符*如: 202.115.6.*

6) IDENTIFIED BY 'password'用户密码设置。不提供该子句的出现的两种情况:创建新用户时--密码为空, 修改用户时--密码不变

7) REQUIRE ssl_option 是否要用加密连接mysql(只有unix mysql支持,一般不用该子句)

8) WITH GRANT OPTION 创建的用户是否能够把自己的权限分配给别的用户

8.1) WITH MAX_CONNECTION_PER_HOUR n MAX_QUERIES_PER_HOUR n MAX_UPDATES_PER_HOUR N;用来设置该用户最大的连接数,每小时查询次数,每小时修改次数。默认情况下无限制。

-----------------------------------------------------------------------------------------------------------
二:收回权限和删除用户
SQL语句:
REVOKE privileges (columns) ON item FROM account
account必须与授予权限时一致,而privileges不用一致。

例子:收回用户的所有权限并删除用户
一种方法:
删除出授权权限外的所有权限
mysql> REVOKE ALL ON *.* FROM userName;
如有为用户添加授权权限则
mysql> REVOKE GRANT OPTION ON *.* FROM userName;
如果创建时要求用户必须使用SSL连接则必须:
mysql> GRANT USAGE ON *.* TO userName REQUIRE NONE;
如果创建时要求用户必须设置连接数等:
mysql> GRANT USAGE ON *.* TO userName WITH MAX_CONNECTION_PER_HOUR 0 MAX_QUERIES_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
上面只是收回了权限,下面是删除用户
mysql> use mysql;
mysql> DELETE FROM user WHERE User= 'userName' and Host = 'hostName';
mysql> FLUSH PRIVILEGES;(重新载入授权表)

更简单的一种方法:
mysql> delete from user where User = 'userName' and Host = 'hostName';
mysql> delete from db where User = 'userName' and Host = 'hostName';
mysql> delete from columns_pri where User = 'userName' and Host = 'hostName';
mysql> delete from tables_pri where User = 'userName' and Host = 'hostName';
mysql> flush privileges;

--------------------------------------------------------------------------------------------------------
三: (扩展)修改口令&设置丢失的口令
方法一: mysql> GRANT USAGE ON *.* TO 'userName'@'hostName' IDENTIFIED BY 'newPassword';

方法二: mysql> set password for 'userName'@'hostName' = PASSWORD('newPassword')

方法三 : mysql> use mysql;
mysql> update User set password = PASSWORD('newPassword') where User = 'userName' AND Host = 'hostName';
mysql> FLUSH PRIVILEGES;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics