MySQL数据库创建一个用户跟权限的应用

时间:2023-01-08 08:54:37

以前好像就学了mysql数据库的crud,今天学了下创建用户跟权限的管理。



首先是

1.创建用户:

CREATE USER '用户名'@'可以登陆此账户的ip地址' IDENTIFIED BY '密码';
MySQL数据库创建一个用户跟权限的应用

这里我创建了一个用户名为suny,登陆地址为本机地址,密码是5201314的账户

ip地址那里指定该用户在哪个主机上可以登陆,本地用户可直接用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%,当然你也可以填写一个ip地址,随你的情况而定。

MySQL数据库创建一个用户跟权限的应用

这里是可以用%实现任意ip地址登陆

密码的话你可以指定密码,也可以留空,就是不用密码就可以直接登陆。挺危险的,你懂的。。。。你可以这样留空:
CREATE USER 'suny'@'%' IDENTIFIED BY ' ';

或者直接不写by后面的:
CREATE USER 'suny' @ '%';



2. 账户权限操作

GRANT 指定该用户拥有的操作权限 ON 数据库名字.数据表名 TO '用户名'@'允许登陆的ip地址' ;

MySQL数据库创建一个用户跟权限的应用

这里给用户名为suny的用户赋予了查询(select)的权限,它只允许查询在test数据库下score表的数据。操作权限常用的分为**SELECT**(查询数据) , **INSERT**(插入数据) , **UPDATE**(更新数据) ,**DELETE**(删除),**ALL**(赋予所有操作权限)
在这里如果你想让这个用户可以操作所有的表的话,你应该给它*来操作所有表。把 数据库名字.表名 换成 *.* 就可以让这个用户可以在设置的权限内操作所有数据库,例如你给一个用户select(查询)的权限的话,这个用户就能查询所有数据库里面的数据,但是请注意设置了select权限,所以只是能查询所有数据库的数据,而不能做增删改之类的操作

上面这样给一个用户设置了权限,但是是不能给其他用户设置权限的,如果你想让这个用户可以给别的用户授权的话,你可以这样设置:
MySQL数据库创建一个用户跟权限的应用
GRANT 指定该用户拥有的操作权限 ON 数据库名字.数据表名 TO '用户名'@'允许登陆的ip地址' WITH GRANT OPTION

后面添加了 WITH GRANT OPTION 这个权限,意思可以理解为授予用户可以设置其他用户权限的权限。



3. 更改用户的密码

当你数据库的密码有风险需要更改时,该怎么办呢?
这里分为两种情况:

  • 自己修改自己的密码
    SET PASSWORD = PASSWORD("新的密码");
    MySQL数据库创建一个用户跟权限的应用
    你需要登陆你自己的账户再执行这条命令
  • 修改别的账户的密码
  • SET PASSWORD FOR '想修改密码的用户名'@'登陆的ip地址' = PASSWORD('设置新的密码');
  • MySQL数据库创建一个用户跟权限的应用


    4.撤销用户的操作权限

REVOKE 要撤销的操作权限 ON 数据库名.数据库表名 FROM '用户名'@'登陆的ip地址';

MySQL数据库创建一个用户跟权限的应用

这里操作权限跟赋予的操作权限是一样的,操作权限常用的分为**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地址';
    MySQL数据库创建一个用户跟权限的应用

就总结这点,希望不足的地方可以指出