您的位置:首页 > 数据库 > MySQL

MySQL增加/删除用户、授权、修改密码

2014-05-12 03:44 561 查看
// 创建用户

mysql> use mysql;

mysql> insert into user(Host,User,Password) values('localhost','yongfu_a',password('my_password'));

// 刷新系统权限表

mysql> flush privileges;

//退出后登录一下

mysql>exit;

说明:

至此创建mysql的第二个用户:yongfu_a(第一个用户是root),他的密码是my_password。需要刷新系统权限表flush
privilege,该用户才能生效登录。此时该用户(yongfu_a)仅有在本机(localhost)使用密码(my_password)登录的权
限,还没有其他权限,需要使用GRANT命令对该用户进行相应授权


通过GRANT授权的方式新增用户

// 以root用户登录mysql

[yongfu]$ mysql -uroot -p

// 新增一个新用户yongfu_b

mysql> grant all privileges on *.* to yongfu_b@'192.168.1.%' identified by 'my_password_2';

说明:

至此创建了mysql的第三个用户:yongfu_b,他的密码是my_password_2。不需要使用flush
privilege刷新系统权限表,改用户立即生效。此时该用户(yongfu_b)可以在192.168.1.0/24的网段上的任意机器使用密码
(my_password_2)登录。同时已经对所有库的所有表赋予了全部权限


ps:使用grant方法新增用户更方便也更省事。只需要一步就可以完成新增用户和用户授权的全部操作

[b]2. MySQL修改用户密码

2.1 直接修改数据库修改密码
[/b]

// 在数据库中修改密码字段

mysql> use mysql

mysql> update user set Password = password("new_password") where User = "yongfu_a" and Host="localhost";

mysql> flush privileges;

2.2 通过GRANT方法修改密码

// 其实就是新增用户那个方法,grant本身是授权、授予的意思。

// 修改用户yongfu_b的密码为 my_password_new

mysql> grant all privileges on *.* to yongfu_b@'192.168.1.%' identified by 'my_password_new';

3. 授权和取消权限
3.1 授权

mysql使用GRANT命令对用户进行授权。前面我们已经数次接触到GRANT命令,用它添加了一个用户,也为用户修改了密码,同时为yongfu_a用户授予了SUPER权限。其实GRANT设计的目的本身只是为了授权的。
// 首先我们查看 yongfu_a 用户有哪些权限
mysql> select * from user where User='yongfu_a' \G;

*************************** 1. row ***************************

Host: localhost

User: yongfu_a

Password: *1603BD6A73604A872220561294D3C5916A7B1E60

Select_priv: N

Insert_priv: N

Update_priv: N

Delete_priv: N

Create_priv: N

省略后面的
**************************************************************************************************************
// 从上面可以看出,yongfu_a 用户只有前面授权的SUPER权限。
// 怎么给yongfu_a用户授予增删改查的权限?使用如下命令:

mysql> GRANT SELECT,UPDATE,INSERT,DELETE on *.* to yongfu_a@'localhost';


// 再查看下权限情况:
mysql> select * from user where User='yongfu_a' \G;
*************************** 1. row ***************************

Host: localhost

User: yongfu_a

Password: *1603BD6A73604A872220561294D3C5916A7B1E60

Select_priv: Y

Insert_priv: Y

Update_priv: Y

Delete_priv: Y
   后面的省略
*
********************************************************
// 这时已经被授予了增删改查的权限了,同时发现SUPER权限还是保留的。

3.2 取消授权
// REVOKE语句的语法格式如下:
// 其中privileges是要取消的权限,user是要被取消权限的用户名, 特别注意user前的关键字变为了from。
REVOKE privileges (columns) on what from user ;

// 取消 yongfu_a用户的增删改查权限
mysql> REVOKE SELECT,UPDATE,INSERT,DELETE on *.* from yongfu_a@'localhost';

mysql> select * from user where User='yongfu_a' \G;

就可以看到,被取消了增删改查的权限了

REVOKE语句用于取消用户的权限,而不可以删除用户。

4. 删除用户
取消了所有的权限,用户仍然可以连接到服务器。要想彻底的删除用户,必须使用DELETE语句将该用户的记录从mysql数据库中的user表中删除。
// 使用DELETE删除用户yongfu_a,代码如下:
mysql> use mysql
Database changed
mysql> delete from user where user='yongfu_a' and host='localhost' ;
mysql>flush privileges ;
Query OK, 1 row affected (0.02 sec)
其中,delete用于删除用户,flush告诉服务器重新加载授权表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: