用户管理和权限管理

    科技2024-11-05  11

    文章目录

    1. 用户管理2. 权限管理

    1. 用户管理

    #1.查看数据库中的所有用户 SELECT DISTINCT CONCAT('User:''', user, '''@''', host, ''';') AS result FROM mysql.user; #2.查看某个用户的权限 show grants for 'root'@'%'; select * from mysql.user where user='root' \G; #3.创建用户: create user 用户名 identified by '该用户密码'; #4.查看当前用户 select user(); #5.修改用户密码 use mysql; UPDATE user SET password=PASSWORD('新密码') WHERE user='用户'; flush privileges; -- 所有通过user表的修改,必须用该命令才能生效 #6.修改用户权限及密码 grant 权限 on 授权对象(库名.表名) to '用户名'@'网段' identified by '该用户的密码'; grant all privileges on myemployees.* to 'zhangsan'@'%' identified by '111111'; #7.删除用户 drop user 'zhangsan'@'%'; -- 不要通过delete from user u where user='zhangsan'进行删除,系统会有残留信息保留

    2. 权限管理

    语法:

    #1.授予权限 grant 权限 on 授权对象(库名.表名) to '用户名'@'网段' identified by '该用户的密码' 【with grant option】; #2.收回权限 revoke 权限 on 授权对象(库名.表名) from '用户名'@'网段' identified by '该用户的密码';

    注意:

    with grant option:表示让该授权的用户,也可以将它的权限赋予给其他用户。

    授权对象的被授权的范围的写法:

    *.*:意为所有的数据库及表。

    数据库名.*:意为该数据库下的所有表。

    数据库名.数据表名:意为该数据库下的该数据表。

    被授权的用户的写法,%代替一整个网段:

    ‘用户名’@’%’:意为所有网段都可以用该用户登陆数据库。

    ‘用户名’@‘192.168.123.234’:意为只有此IP可使用该用户登陆数据库。

    ‘用户名’@‘192.168.122.%’:意为192.168.122该网段的所有主机都可使用该用户登陆数据库。

    权限说明:

    all privileges:除with grant option(让授权的用户,也可以将这些权限grant给其他用户,权限复制)之外的所有权限。

    alter:对数据表的修改的权限。

    alter routine:更改或者删除存储函数或者存储过程的权限。

    create:创建数据库及表的权限。

    create routine:更改和弃用存储过程的能力。

    create temporary tables:创建临时表的权限。

    create user:创建、重命名和撤销用户的权限。

    create view:创建视图的权限。

    delete:数据表中删除数据的权限。

    drop:允许删除数据库、表、视图的权限。

    execute:执行存储过程或者调用函数的权限。

    event:允许查询,创建,修改,删除MySQL事件的权限。

    file:对系统中的文件(本地文件)读取和写操作的权限。

    grant option:用户委派权限的权限。

    index:创建、删除索引的权限。

    insert:向表中插入数据的权限。

    lock tables:允许对拥有select权限的表进行锁表的权限。

    process:查看所有用户线程/连接的权限。

    references:5.7.6版本后,允许是否创建外键的权限。

    reload:允许执行flush,重新加载权限表的权限。

    replication client:允许用户查询从服务器和主服务器位置的权限。

    replication slave:允许slave主机通过此用户连接master建立主从的权限。

    select:允许从表中查看数据的权限。

    show databases:查看所有数据库名的权限。

    show view:查看视图详细信息的权限。

    shutdown:允许关闭数据库实例的权限。

    super:允许执行一系列数据库管理命令的权限(change、master、kill thread、mysqladmindebug、purge master logs、set global…)。

    trigger:MySQL5.1.6后,允许创建,删除,执行,显示触发器的权限。

    update:允许修改表中的数据的权限。

    usage:创建一个用户之后的默认权限,只代表连接,无其他任何权限。

    案例:

    #创建用户并授予只读权限 grant select on 数据库名.* to 用户@'网段或ip' identified by '密码'; #创建用户并授予插入数据权限 grant insert on 数据库名.* to 用户@'网段或ip' identified by '密码'; #创建用户并授予改变原有数据的权限 grant update on 数据库名.* to 用户@'网段或ip' identified by '密码'; #创建用户并授予删除数据的权限 grant delete on 数据库名.* to 用户@'网段或ip' identified by '密码'; #要拥有以上所有权限,可写为一条,权限间用逗号隔开 grant select, insert, update, delete on 数据库名.* to 用户@'网段或ip' identified by '密码'; #创建用户并授予所有权限 grant all privileges on 数据库名.数据表明 to 用户@'网段或ip' identified by '密码'; #创建用户并授予其对数据表的创建的权限 grant create on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对数据表的修改权限 grant alter on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对数据库/表/视图的删除的权限 grant drop on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对数据库下表的设置外键的权限 grant references on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对数据库的设置临时表权限 grant create temporary tables on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对某数据库范围的表设置索引的权限 grant index on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对某数据库范围内创建视图的权限 grant create view on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对某数据库范围内查看视图的权限 grant show view on 数据库名.* to 用户@'网段或IP' identified by '密码'; #创建用户并授予其对某数据库范围内存储过程、函数的权限 grant create routine on 数据库名.* to 用户@'网段或IP'; grant alter routine on 数据库名.* to 用户@'网段或IP'; grant execute on 数据库名.* to 用户@'网段或IP'; #创建用户并授予其对数据表中列的权限 grant select(列的名字) on 数据库.数据表 to 用户@'网段或IP' identified by '密码'; -- 如有很多列,要用逗号隔开 #创建用户并授予对数据表中的存储过程和函数的权限 grant execute on procedure 数据库名.数据表名 to '用户'@'网段或IP' identified by '密码'; grant execute on function 数据库名.数据表名 to '用户'@'网段或IP' identified by '密码';
    Processed: 0.029, SQL: 8