以前好像就学了mysql数据库的crud,今天学了下创建用户跟权限的管理。
首先是
1.创建用户:
CREATE USER '用户名'@'可以登陆此账户的ip地址' IDENTIFIED BY '密码';
这里我创建了一个用户名为suny,登陆地址为本机地址,密码是5201314的账户
ip地址那里指定该用户在哪个主机上可以登陆,本地用户可直接用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%,当然你也可以填写一个ip地址,随你的情况而定。
这里是可以用%实现任意ip地址登陆
密码的话你可以指定密码,也可以留空,就是不用密码就可以直接登陆。挺危险的,你懂的。。。。你可以这样留空: CREATE USER 'suny'@'%' IDENTIFIED BY ' ';
或者直接不写by后面的: CREATE USER 'suny' @ '%';
2. 账户权限操作:
GRANT 指定该用户拥有的操作权限 ON 数据库名字.数据表名 TO '用户名'@'允许登陆的ip地址' ;
这里给用户名为suny的用户赋予了查询(select)的权限,它只允许查询在test数据库下score表的数据。操作权限常用的分为**SELECT**(查询数据) , **INSERT**(插入数据) , **UPDATE**(更新数据) ,**DELETE**(删除),**ALL**(赋予所有操作权限)
在这里如果你想让这个用户可以操作所有的表的话,你应该给它*来操作所有表。把 数据库名字.表名 换成 *.* 就可以让这个用户可以在设置的权限内操作所有数据库,例如你给一个用户select(查询)的权限的话,这个用户就能查询所有数据库里面的数据,但是请注意设置了select权限,所以只是能查询所有数据库的数据,而不能做增删改之类的操作
上面这样给一个用户设置了权限,但是是不能给其他用户设置权限的,如果你想让这个用户可以给别的用户授权的话,你可以这样设置: GRANT 指定该用户拥有的操作权限 ON 数据库名字.数据表名 TO '用户名'@'允许登陆的ip地址' WITH GRANT OPTION
后面添加了 WITH GRANT OPTION 这个权限,意思可以理解为授予用户可以设置其他用户权限的权限。
3. 更改用户的密码
当你数据库的密码有风险需要更改时,该怎么办呢?
这里分为两种情况:
- 自己修改自己的密码
SET PASSWORD = PASSWORD("新的密码");
你需要登陆你自己的账户再执行这条命令
- 修改别的账户的密码
SET PASSWORD FOR '想修改密码的用户名'@'登陆的ip地址' = PASSWORD('设置新的密码');
-
4.撤销用户的操作权限
REVOKE 要撤销的操作权限 ON 数据库名.数据库表名 FROM '用户名'@'登陆的ip地址';
这里操作权限跟赋予的操作权限是一样的,操作权限常用的分为**SELECT**(查询数据) , **INSERT**(插入数据) , **UPDATE**(更新数据) ,**DELETE**(删除)等等,当我们执行撤销命令时可能会碰到以下的情况:你赋予权限的时候是这样的
第一种情况:
GRANT SELECT ON test.user TO 'suny'@'%',
执行往后suny用户拥有select(查询)test下的user表的权限,然后想要撤销它权限的话,执行REVOKE SELECT ON *.* FROM 'suny'@'%';
并不能撤销它的权限。第二种情况:
-
REVOKE SELECT ON *.* FROM 'suny'@'%';
执行往后suny用户拥有select(查询)test下的user表的权限,然后想要撤销它权限的话,执行GRANT SELECT ON test.user TO 'suny'@'%',
也不能撤销它的权限。
5.删除用户
看某用户行为不满意的时候,要删了它怎么办?DROP USER '用户名'@'登陆ip地址';
就总结这点,希望不足的地方可以指出