精华内容
下载资源
问答
  • 用户权限管理
    万次阅读 多人点赞
    2018-10-09 21:37:06

    1、mysql数据库的权限

    (1)mysql数据库用户权限级别

             1)全局性管理权限:作用于整个mysql实例级别

             2)数据库级别:作用于指定的某个数据库上或者所有数据库上

             3)数据库对象级别权限:作用于指定的数据库对象上(表或者视图)

    (2)mysql数据库用户权限

    权限名称

    权限说明

    All/All Privileges

    全局或者全数据库对象级别的所有权限

    Alter

    修改表结构的权限,但必须要求有create和insert权限配合

    Alter routine

    修改或者删除存储过程、函数的权限

    Create

    创建新的数据库和表的权限

    Create routine

    允许创建存储过程、函数的权限

    Create tablespace

    允许创建、修改、删除表空间和日志组的权限

    Create temporary tables

    创建临时表权限

    Create user

    创建、修改、删除、重命名user

    Create view

    创建视图

    Delete

    删除行数据

    drop

    删除数据库、表、视图的权限,包括truncate table命令

    Event

    查询,创建,修改,删除MySQL事件

    Execute

    执行存储过程和函数

    File

    在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile,select ,into outfile,load file()函数等

    Grant option

    授权或者收回给其他用户你给予的权限

    Index

    创建和删除索引

    Insert

    在表里插入数据

    Lock

    对拥有select权限的表进行锁定,以防止其他链接对此表的读或写

    Process

    允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令

    Reference

    允许创建外键

    Reload

    执行flush命令,指明重新加载权限表到系统内存中

    Replication client

    执行show master status,show slave status,show binary logs命令

    Replication slave

    允许slave主机通过此用户连接master以便建立主从复制关系

    Select

    从表中查看数据

    Show databases

    通过执行show databases命令查看所有的数据库名

    Show view

    通过执行show create view命令查看视图创建的语句

    Shutdown

    关闭数据库实例,执行语句包括mysqladmin shutdown

    Super

    允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令,change master to创建复制关系命令,以及create/alter/drop server等命令

    Trigger

    允许创建,删除,执行,显示触发器的权限

    Update

    修改表中数据的权限

    Usage

    创建一个用户之后的默认权限,本身代表无权限

    (3)存放用户权限表的说明

           Mysql数据库用户权限存储在mysql库的user, db, tables_priv, columns_priv, procs_priv这几个系统表中, MySQL实例启动后就加载到内存中

    存放权限的表

    表的作用

    user

    存放用户账户信息以及全局级别(所有数据库)权限,(存放了那些用户可以访问那些数据库的权限)

    db

    数据库级别权限,决定了来自哪些主机的哪些用户可以访问此数据库

    tables_priv

    存放表级别的权限,决定了来自哪些主机的哪些用户可以访问数据库的那张表

    columns_priv

    存放列级别的权限,决定了来自哪些主机的哪些用户可以访问数据库表的字段

    procs_priv

    存放存储过程和函数级别的权限

       Mysql数据库权限管理中,字段user,password,authencation_string,db,table_name大小写敏感,而字段host,column_name,routine_name对大小写不敏感。

    2、用户权限管理

    (1)创建用户及授权

             Mysql用户创建可以通过create user/grant命令创建,也可以通过insert语句直接操作MySQL系统权限表来创建。

    创建及给用户授权命令:

             创建用户:CREATE USER username@'host' IDENTIFIED BY 'password'

             用户授权:GRANT permission ON database.tables TO username@’host’

             创建用户并授权:GRANT permission ON database.tables TO username@'hostt'  WITH GRANT OPTION;

         MYSQL创建用户及给用户授权的用户名主机部分由两部分组成,分别为用户名和登录主机名,格式为’username’@’hostname’;hostname字段可以使用主机名或者ip地址,同时hostname字段允许使用”%”和”_”两种字符进行匹配。

    # 创建用户dayi123并授予本地登录所有库所有权限
    mysql> create user 'dayi123'@'localhost' identified by 'dayi123';
    mysql> grant all privileges on *.* to 'dayi123'@'localhost' with grant option;
    # 创建用户用户dayi通过192.168.0.0段ip地址登录的增删该查跟新库web的权限
    mysql> grant select,insert,update,delete,create,drop on web.* to 'dayi'@'192.168.%.%' identified by 'dayi123';
    # 给root用户授权可以通过192.168.0.0段地址登录
    mysql> grant all on *.* to root@'192.168.%.%' identified by 'dayi123';

    (2)用户权限查看

             查看已经授权给用户权限信息命令:show grants for ‘username’@’host’

    # 查看授权给'dayi'@'192.168.%.%'的权限信息
    mysql> show grants for 'dayi'@'192.168.%.%';
    +---------------------------------------+
    | Grants for dayi@192.168.%.%              |                                         
    +---------------------------------------------------+
    | GRANT USAGE ON *.* TO 'dayi'@'192.168.%.%'   |                                         
    | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `web`.* TO 'dayi'@'192.168.%.%' |
    +---------------------------------------------------+
    2 rows in set (0.00 sec)

    查看创建用户的语句:show create user ‘username’@’host’

    # 查看给用户’dayi’没有授权的信息
    mysql> show create user dayi@'192.168.%.%';
    +------------------------------------------+
    | CREATE USER for dayi@192.168.%.%            |                                                                                                                       
    +--------------------------------------------+
    | CREATE USER 'dayi'@'192.168.%.%' IDENTIFIED WITH 'mysql_native_password' AS '*8FD40AC91E6D5D89D1060096FDEF8A4ECAA05B5C' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK |
    +-----------------------------------------------+
    1 row in set (0.00 sec)

    (3)收回用户权限

             收回用户权限是可以通过语句revoke完成,命令格式为:

             Revoke permission on ‘database’,’tables’ from ‘username’@’host’

    # 收回用户dayi远程登录的drop权限;
    mysql> revoke drop on web.* from dayi@'192.168.%.%';
    Query OK, 0 rows affected (0.00 sec)

    (4)设置用户密码

             Mysql数据库一般在创建用户时就给用户设置了密码,如果在用户创建完成后想修改密码,可通过相应的命令来完成。

             1)修改其他用户密码(当前用户要有权限),一般在root用户下操作

             登录mysql后的修改命令:

                      Alter user ‘username’@’host’ identified by ‘newpassword’

                      Set password for ‘username’@’host’=password(‘newpassword’)

                      Grant user on permission to ‘user’@’host’ identified by ‘newpassword’

             在系统命令行下修改:

                      mysqladmin –u uername –h host password “newpassword”

    # 修改dayi123的密码为dayi1234
    mysql> alter user 'dayi123'@'localhost' identified by 'dayi1234';
    Query OK, 0 rows affected (0.35 sec)
    # 修改dayi远程登录密码为dayi1234
    mysql> set password for 'dayi'@'192.168.%.%'=password('dayi1234');
    Query OK, 0 rows affected, 1 warning (0.00 sec)

             2)修改当前用户密码

                 alter user user() identified by ‘newpassword’

                 set password=password(‘newpassword’)

    # 修改当前登录的root的密码为dayi1234
    mysql> alter user user() identified by 'dayi1234';
    Query OK, 0 rows affected (0.00 sec)

    (5)mysql用户删除

             删除命令:drop user ‘username’@’host’

    # 删除用户dayi远程登录
    mysql> drop user 'dayi'@'192.168.%.%';
    Query OK, 0 rows affected (0.00 sec)
    # 查看删除后的用户
    mysql> select user,host from mysql.user;
    +---------------+-------------+
    | user          | host        |
    +---------------+-------------+
    | root          | 192.168.%.% |
    | dayi          | localhost   |
    | dayi123       | localhost   |
    | mysql.session | localhost   |
    | mysql.sys     | localhost   |
    | root          | localhost   |
    +---------------+-------------+

    (6)用户的锁定与解锁

             在创建用户时或用户创建后可以将用户锁定,用户被锁定后,此用户无法完成登录,锁定与解锁的命令如下:

             在创建用户时锁定用户:

             Create user ‘username’@’host’ identified by ‘password’ account lock;

             用户创建受锁定用户L

             Alter user ‘username’@’host’ account lock

             解锁用户:alter user ‘username’@’host’ account unlock;

    # 锁定用户dayi123
    mysql> alter user 'dayi123'@'localhost' account lock;
    Query OK, 0 rows affected (0.00 sec)
    # 用户被锁定后等录时报如下错:
    ~]# mysql -udayi123 -p
    Enter password: 
    ERROR 3118 (HY000): Access denied for user 'dayi123'@'localhost'. Account is locked.
    # 解锁用户dayi123
    mysql> alter user 'dayi123'@'localhost' account unlock;
    Query OK, 0 rows affected (0.00 sec)

    (7)设置密码过期策略

             Mysql数据库用户同系统用户一样,可以设置密码过期策略,密码的过期天数可以在配置文件里面设置,也可以通过命令设置,通过命令为每个用户设置密码的过期天数则会覆盖系统配置文件中的设置。

             1)配置文件中设置

             选项:default_password_lifetime=”过期天数” :如果设置为0,则密码永不过期。

             2)通过命令设置

             命令:alter user ‘username’@’localhost’ password expire interval number day; 设置过期天数

                         alter user ‘username’@’localhost’ password expire never; 设置密码不过期

                         alter user ‘username’@’localhost’ password expire default; 默认过期策略

                         alter user ‘username’@’localhost’ password expire; 手动强制密码过期

    #设置用户dayi123的密码180天后过期
    mysql> alter user 'dayi123'@'localhost' password expire interval 180 day;
    Query OK, 0 rows affected (0.00 sec)
    # 设置用户dayi的密码立即过期
    mysql> alter user 'dayi'@'localhost' password expire;
    Query OK, 0 rows affected (0.00 sec)
    # 设置密码过期后执行命令时需要修改密码才能执行命令
    ]# mysql -udayi –p
    ……
    mysql> show databases;
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

    (8)mysql数据库用户资源限制

             通过修改mysql数据库资源限制可以限制用户在某个时间段内连接mysql数据库的时间、执行语句的次数等。

             1)设置参数:

             max_user_connections:全局选项,限制所有用户在同一时间连接mysql数据库实例的数量

             MAX_QUERIES_PER_HOUR:一个用户在一个小时内可以执行查询的次数(基本包含所有语句)

             MAX_UPDATES_PER_HOUR:一个用户在一个小时内可以执行修改的次数(仅包含修改数据库或表的语句)

             MAX_CONNECTIONS_PER_HOUR:一个用户在一个小时内可以连接MySQL的时间

             MAX_USER_CONNECTIONS:一个用户可以在同一时间连接MySQL实例的数量

             2)设置mysql数据库用户资源限制

             设置mysql数据库用户资源限制时可以在创建用户时设置,也可以在用户创建完成后通过命令设置。

    # 创建用户day,并对用户day的资源进行控制
    mysql> create user 'day'@'localhost' identified by 'dayi123' with max_queries_per_hour 20 max_updates_per_hour 10 max_connections_per_hour 5 max_user_connections 2;  
    Query OK, 0 rows affected (0.00 sec)
    # 对用户dayi进行资源控制
    mysql> alter user 'dayi'@'localhost'  with max_queries_per_hour 20 max_updates_per_hour 10 max_connections_per_hour 5 max_user_connections 2;
    Query OK, 0 rows affected (0.00 sec)

             当需要取消某个选项的,只需将某个选项的值设置为0即可。

    更多相关内容
  • MySQL用户权限管理

    千次阅读 2019-06-20 22:20:36
    MySQL用户权限管理 知识要点 了解mysql的默认用户 权限的分类 用户的创建 给用户授权 废除用户权限 MySQL的认证方式 用户名 密码 登录地址 root@localhost(登录主机的地址—客户端) 密码 客户端:要通过什么...

    MySQL用户权限管理

    知识要点
    了解mysql的默认用户
    权限的分类
    用户的创建
    给用户授权
    废除用户权限

    MySQL的认证方式
    用户名 密码 登录地址
    root@localhost(登录主机的地址—客户端) 密码
    客户端:要通过什么用户通过什么密码登录服务器
    用户名 密码 要登录的服务器的ip地址 服务器提供的mysql服务的端口号

    服务端:验证客户端的登录信息是否在我的用户表里
    认证三项:用户名 密码 客户端的登录主机(host)
    mysql.user表(涉及到客户端连接)

    补充: mysql> desc mysql.user; ##desc查看mysql.user表中列的属性,包括用户名 登录主机 还有各类的权限表,密码的相关属性 enum是指枚举
    在这里插入图片描述

    type是指类型 null是指是否允许为空 key是指有没有索引 default是指有没有默认值 extra是备注

    mysql> select user,host,authentication_string from mysql.user; ##在mysql.user表里查看用户名 登录主机 密码(在高版本中密码不以明文存储)的等信息
    在这里插入图片描述

    了解mysql默认的用户

    当全新的MySQL数据库安装完毕后,系统就为我们默认地创建了几个用户:管理员用户root以及匿名用户。通过查看名为mysql的系统数据库中的user表,可以看到所有的用户名及其全局权限(Global Privileges)

    mysql> select user,host from mysql.user;
    ±--------------±----------+
    | user | host |
    ±--------------±----------+
    | mysql.session | localhost |
    | mysql.sys | localhost | #没有全局权限
    | root | localhost | # mysql的超级管理员,拥有全部的全局权限
    ±--------------±----------+
    6 rows in set (0.00 sec)

    mysql>

    1.mysql> select * from mysql.user\G ##查看mysql.user表中所有列的信息 \G显示比较清晰。通过显示输出可以看到 root @localhost拥有全部的全局权限。mysql.sys没有全局权限

    2.mysql> show grants for ‘mysql.sys’@‘localhost’; ##查看mysql.sys的权限表
    ±--------------------------------------------------------------+
    | Grants for mysql.sys@localhost |
    ±--------------------------------------------------------------+
    | GRANT USAGE ON . TO ‘mysql.sys’@‘localhost’ |
    | GRANT TRIGGER ON sys.* TO ‘mysql.sys’@‘localhost’ | #TRIGGER触发器权限
    | GRANT SELECT ON sys.sys_config TO ‘mysql.sys’@‘localhost’ | # 有sys数据库的sys_config表的SELECT权限
    ±--------------------------------------------------------------+
    3 rows in set (0.01 sec)

    3.mysql> show privileges; ##查看总的权限表
    Usage | Server Admin | No privileges - allow connect only ##没有权限,只是允许连接

    4.‘mysql.sys’@’localhost’:
    用于 sys schema中对象的定义。使用 mysql.sys 用户可避免DBA重命名或者删除root用户时发生的问题。该用户已被锁定,客户端无法连接。

    5.‘mysql.session’@’localhost’:
    插件内部使用来访问服务器。该用户已被锁定,客户端无法连接。

    6.‘root’@’localhost’:
    其用于管理。该用户拥有所有权限,可执行任何操作

    7.权限:不要轻易的授权给用户超级权限,授予给用户的权限只要满足用户的操作即可,不 要赋予多余权限 (select/insert/delete/update)

    了解不存在用户的默认行为

    1.在低版本中存匿名用户(不存在用户)的概念,使用匿名用户登录时,可以不使用密码,随便一个用户名就能登录,也不会检查登录主机,但是匿名用户的权限非常低,不会对数据库自身造成影响。但危害是在正常存在的用户在登录,有可能会被认为是匿名用户

    2.在刚创建低版本mysql时可以使用mysql> select user,host from mysql.user;检查匿名用户是否存在
    删除匿名用户(delete from mysql.user where user=’’;)匿名用户的特点是mysql.user表中user的列值=’’;

    3.真实存在的用户有生产库/业务库的真实权限

    4.可见,匿名用户有权看到两个数据库:一个名为information_schema的系统数据库和一个test数据库。它对test数据库拥有全部权限,可以在里面创建表,进行DML操作(修删改查)等。对information_schema系统数据库中的表拥有查询权限,但是不能执行DML操作

    5.低版本数据库存在,高版本已经不允许匿名用户登录数据库,系统中不存在匿名用户

    权限分类
    语法:grant 权限操作分类 on 数据库作用范围权限分类 to 某个用户;

    按照权限的授予级别,可分成以下几类:
    show privileges; ##查看数据库中支持的权限有哪些

    数据库作用范围权限分类
    1.全局权限Global Privileges:测试举例
    它是管理权限,作用到服务器上的所有数据库。要授予全局权限,使用 ON *.的语法,.*表示所有数据库的所有表(对象,视图等)中。MySQL 把全局权限保存在 mysql.user 表中

    2.数据库权限Database Privileges:测试举例
    作用到某个特定数据库的所有对象上。要授予数据库权限,使用 ON db_name.* 的语法,db_name.*表示db_name数据库下的所有表(对象,视图等)。 MySQL 把数据库权限保存在 mysql.db 表中

    3.表权限Table Privileges:测试举例
    应用到某个特定表的所有列上。要授予表权限,使用 ON db_name.tbl_name 的语法。 MySQL 把表权限保存在 mysql.tables_priv 表中

    4.列权限

    权限操作分类: 使用逗号分隔
    1.列权限
    作用在特定表的特定列上,在权限操作分类中体现列权限 select(col_name),记录到mysql.columns_prive表中 field

    2.存储过程权限
    作用在存储过程和函数上,记录到mysql.procs_prive表中 procedure

    3.代理用户权限
    作用是使一个用户成为另一个用户的代理,记录到mysql.proxies_priv表中 proxy

    具体分类
    在grant和revoke语句中可用的权限如下表所示:
    在这里插入图片描述在这里插入图片描述

    补充:
    1.ALL权限 谨慎对待 包含着管理数据库的权限
    在mysql.user表中,除了Grant_priv是N外,所有的_prive结尾的列值都是Y
    grant option:表示我自己有的权限可以授权给别人

    2.event-mysql的时间调度-linux下的crontab

    3.mysql> show processlist; #查看当前正在运行的进程列表
    在这里插入图片描述

    command是指执行了什么操作 state是指状态 info是指执行语句 id进程号(可以使用kill杀死)

    权限检查顺序
    Mysql数据库下的表user(全局权限)、db(数据库权限)、tables_priv(表权限)、columns_priv(列权限)、procs_priv(存储过程权限)、proxies_priv(代理用户权限)共同构成授权表
    权限检查顺序如下图:
    在这里插入图片描述

    创建用户

    create user的使用语句
    CREATE USER user_specification [, user_specification] …
    [REQUIRE {NONE | ssl_option [[AND] ssl_option] …}]
    [WITH resource_option [resource_option] …]
    [password_option | lock_option] …
    user_specification:
    user_name [ auth_option ]

    auth_option: {认证选项
    IDENTIFIED BY ‘auth_string’
    | IDENTIFIED BY PASSWORD ‘hash_string’
    | IDENTIFIED WITH auth_plugin
    | IDENTIFIED WITH auth_plugin AS ‘hash_string’
    | IDENTIFIED WITH auth_plugin BY ‘auth_string’
    }

    ssl_option: {加密连接选项
    SSL | X509 | CIPHER ‘cipher’
    | ISSUER 'issuer‘ | SUBJECT ‘subject’
    }

    resource_option: {使用资源选项 ##说明:是对使用资源的限制
    MAX_QUERIES_PER_HOUR count ##最大的资源访问量
    | MAX_UPDATES_PER_HOUR count ##每小时最大更新
    | MAX_CONNECTIONS_PER_HOUR count ##每小时最大连接
    | MAX_USER_CONNECTIONS count ##每小时最大的连接数量
    }

    password_option: {密码过期选项
    PASSWORD EXPIRE --立即过期
    | PASSWORD EXPIRE DEFAULT --360天 ##指定过期的天数,360天可以换成任意天数
    | PASSWORD EXPIRE NEVER ##永不过期
    | PASSWORD EXPIRE INTERVAL N DAY ##间隔多少天后过期
    }

    lock_option: {账户锁定选项
    ACCOUNT LOCK ##账号锁定
    | ACCOUNT UNLOCK ##账号解锁
    }

    注意:上述语法中,在MySQL 5.7.6之前,只有第1行的create user子句
    和其它数据库不同,MySQL使用用户名、密码和登录位置来验证用户

    补充:使用grant也可以新建用户
    grant all on . to ‘u1’@’%’ identified by ‘123’ with grant option; ##新建一个u1@%用户,这个用户有所有权限

    如果不加密码也想创建成功的话,需要执行下面的语句
    mysql> show variables like ‘sql_mode’;
    ±--------------±------------------------------------------------------------------------------------------------------------------------------------------+
    | Variable_name | Value |
    ±--------------±------------------------------------------------------------------------------------------------------------------------------------------+
    | sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
    ±--------------±------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    mysql> set @@session.sql_mode=‘ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’; ##去掉 NO_AUTO_CREATE_USER不自动创建用户

    Query OK, 0 rows affected, 1 warning (0.00 sec)

    mysql> grant all on . to ‘u22’@’%’ with grant option; ##创建没有密码的u22成功
    Query OK, 0 rows affected, 1 warning (0.00 sec)

    示例1:创建一个新用户demo,密码为demo,允许从本机登录
    create user ‘demo’@‘localhost’ identified by ‘demo’;
    注意:用户名和主机名要分别用引号括起来(如果用户名没有特殊字符,主机名没有特殊字符和通配符%,也可以不加引号)。密码必须用引号括起来
    如果不指定主机名,默认的主机名是百分号%,它代表任意主机
    例如:在这里插入图片描述

    示例2:创建一个新用户demo1,密码为demo1,允许从任意主机登录
    create user ‘demo1’ identified by ‘demo1’;
    或者
    create user ‘demo1’ @’%’ identified by ‘demo1’;

    示例3:创建一个新用户demo2,没有密码,允许从任意主机登录
    create user ‘demo2’;
    注意:如果两个用户具有相同的用户名但是主机名不同,MySQL把他们看做不同的用户
    如果创建的用户已经存在,则抛出异常

    当create user语句执行成功后,便在授权表mysql.user中写上一行

    示例4:查询所有的用户账户
    select user,host,authentication_string(认证字符串) from mysql.user;
    一个新用户创建出来后,它可以连接到数据库,并有权看到information_schema的系统数据库。对information_schema系统数据库中的表拥有查询权限,但是不能执行DML(增删改查等)操作。如果还想进行其它操作,必须给他授权

    mysql的登录方式
    1)本地socket方式
    msql -uroot -p123 -S /usr/local/mysql/data/mysql.sock
    2)网络方式
    127.0.0.1(本地回环)—识别成了localhost
    IP地址—网络

    修改用户名

    语法:该语句不影响用户的密码
    RENAME USER old_user TO new_user
    [, old_user TO new_user] …

    示例5:将用户demo1和demo2分别改名为newdemo1和newdemo2
    rename user
    ‘demo1’@‘localhost’ to ’newdemo1’@‘127.0.0.1’,
    ‘demo3’@’%’ to ‘newdemo2’@‘127.0.0.1’;
    注:修改用户名时一定要将主机名写上,否则会创建登录主机是%的用户

    修改密码

    一共有三种方式,
    1.set password for ‘u1’@’%’ =password(‘123’)
    2. alter user ‘u1’@’%’ identified by ‘123’ 推荐使用
    3. grant all on . to ‘u1’@’%’ identified by ‘123’
    注意:从5.7.6 版本开始,grant语句不提倡使用( is deprecated )。使用ALTER USER语句代替:
    ALTER USER user_name IDENTIFIED BY 'auth_string‘;
    在这里插入图片描述

    SET PASSWORD语法
    SET PASSWORD [FOR user_name] = password_option;
    password_option: {
    PASSWORD(‘auth_string’)
    | ‘auth_string‘ --只适合5.7.6及其之后的版本
    | ‘hash_string‘ --只适合5.7.6之前的版本
    }
    ‘auth_string’:未加密的明文字符串密码。PASSWORD函数将其加密后保存。 ‘hash_string’:已经加密的密码

    示例6:修改自己的密码
    set password=password(‘123’);
    如果你具有mysql数据库的update权限,就可以修改别人的密码

    示例7:修改demo用户的密码
    set password for demo@127.0.0.1 =password(‘123’);

    给用户授权

    GRANT的适用语法
    GRANT priv_type [(column_list)]
    [, priv_type [(column_list)]] …
    ON [object_type] priv_level
    TO user_specification [, user_specification] …
    [REQUIRE {NONE | ssl_option [[AND] ssl_option] …}]
    [WITH {GRANT OPTION | resource_option} …]
    object_type: {
    TABLE | FUNCTION | PROCEDURE
    }
    priv_level: {
    * | . | db_name.* | db_name.tbl_name
    | tbl_name | db_name.routine_name
    }
    user_specification:
    user_name [ auth_option ]
    auth_option: { # As of MySQL 5.7.6
    IDENTIFIED BY ‘auth_string’
    | IDENTIFIED BY PASSWORD ‘hash_string’
    | IDENTIFIED WITH auth_plugin
    | IDENTIFIED WITH auth_plugin AS ‘hash_string’
    | IDENTIFIED WITH auth_plugin BY ‘auth_string’
    }

    ssl_option: {
    SSL | X509 | CIPHER 'cipher’ | ISSUER ‘issuer’
    | SUBJECT ‘subject’
    }

    resource_option: {
    | MAX_QUERIES_PER_HOUR count
    | MAX_UPDATES_PER_HOUR count
    | MAX_CONNECTIONS_PER_HOUR count
    | MAX_USER_CONNECTIONS count
    }

    授予表权限
    注意:如果被授权的用户不存在,那么grant语句会自动创建新的账户,除非设置参数sql_mode包含“NO_AUTO_CREATE_USER” 。

    mysql> grant all on test.a to ‘bbb’@‘localhost’;
    ERROR 1133 (42000): Can’t find any matching row in the user table
    mysql> grant all on test.a to ‘bbb’@‘localhost’ identified by ‘123’; ##新建了bbb用户
    Query OK, 0 rows affected, 1 warning (0.00 sec)

    mysql> show warnings; ##查看告警信息
    ±--------±-----±-----------------------------------------------------------------------------------------------------------------------------------+
    | Level | Code | Message |
    ±--------±-----±-----------------------------------------------------------------------------------------------------------------------------------+
    | Warning | 1287 | Using GRANT for creating new user is deprecated and will be removed in future release. Create new user with CREATE USER statement. |
    ±--------±-----±-----------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    授予列权限

    示例9:授予用户bob可以对test.a表的id和name列进行更新
    grant update(id,name)
    on test.a
    to ‘bob’@‘localhost’;
    注意:权限都是单独授予的,对某个表具有update权限不会导致自动得到select权限

    授予数据库权限

    表权限只针对某一张表,可针对整个数据库授权
    示例10:授予bob可以对test数据库中的所有表进行查询
    grant select
    on test.* ## test.表示test数据库中的所有表
    to bob;
    示例11:授予jim在 test数据库中创建、修改、删除表的权限以及创建视图的权限
    grant create,alter,drop,create view
    on test.

    to jim;

    授予全局权限

    示例12:授予jim可以对当前数据库中的所有表进行查询
    grant select
    on *
    to jim;
    *号表示当前数据库
    授予全局权限,应用到所有数据库上

    示例13:授予jim可以创建、删除数据库以及对所有数据库中的所有表进行create、alter和drop
    grant create,alter,drop
    on . ##*.*也可以更换为其他具体的数据库
    to jim;

    示例14:授予jim可以创建新用户
    grant create user
    on .
    to jim;

    示例15:授予newroot1具有和root@localhost一样的权限
    grant all
    on .
    to ‘newroot1’@’localhost’ with grant option; ##with grant option表示也可以授予别人权限
    查看自己的权限 查看别人的权限:
    show grants; show grants for 用户;

    权限的传递

    with grant option子句
    通过在grant语句的最后使用该子句,就允许被授权的用户把得到的权限继续授给其它用户

    示例16:授予jim对ceshi表具有select权限,并允许他把权限授给其它用户
    grant select on test.ceshi to jim with grant option;

    以jim连接登录,执行:
    grant select on test.ceshi to bob;

    废除权限
    REVOKE
    priv_type [(column_list)]
    [, priv_type [(column_list)]] …
    ON [object_type] priv_level
    FROM user [, user] …

    —废除用户在所有级别上的权限:
    REVOKE ALL PRIVILEGES, GRANT OPTION
    FROM user [, user] …

    示例17:废除aaa用户对ceshi表的查询权限
    REVOKE ALL PRIVILEGES ON test.ceshi from ‘aaa’@‘localhost’;

    再以aaa执行查询:
    mysql> select * from test.ceshi;
    ERROR 1142 (42000): SELECT command denied to user ‘aaa’@‘localhost’ for table ‘ceshi’
    mysql>

    示例18:废除jim对test.ceshi 表的select权限
    revoke select on test.ceshi from jim;
    因为jim通过with grant option把该权限又授给了bob,因此bob也失去了对test.ceshi 表的select权限

    示例19:要废除jim得到的with grant权限,使用以下语句:
    revoke grant option on test.ceshi from jim;

    常见问题

    主机名使用localhost还是127.0.0.1?
    使用localhost,是通过socket来连接;
    使用127.0.0.1,是通过tcp/ip来连接 ##使用本地回环
    不要把mysql系统数据库的权限授给用户 ##mysql系统数据库里面有很多权限表
    不要随便授予super权限 ##super是管理数据库的权限
    show privileges;
    用户具有usage权限意味着“没有权限”,它只表示该用户可以连接到数据库。无法废除该权限

    select * from mysql.tables_prive ##查看所有表的权限

    select * from mysql.columns_prive ##查看所有列的权限

    select * from mysql.db ##查看mysql数据库的所有表的信息

    select connection_id(); ##查看当前回话的编号

    select * from sys.session; ##查看编号对应的用户名等信息

    展开全文
  • Confluence用户权限管理

    千次阅读 2021-03-08 14:30:19
    Confluence用户权限管理 1.概述 介绍用户管理和用户组管理以及他们的权限管理。 2.用户管理 2.1.用户新增 可以通过用户列表查看系统已有的用户,选择某个用户可以编辑他们的信息 添加用户:可以手动添加新用户 ...

    Confluence用户权限管理

    1.概述

    介绍用户管理和用户组管理以及他们的权限管理。

    2.用户管理

    2.1.用户新增

    • 可以通过用户列表查看系统已有的用户,选择某个用户可以编辑他们的信息
    • 添加用户:可以手动添加新用户
    • 邀请用户:可以通过邮件方式邀请用户加入
    • 用户注册:可以开启用户注册权限,让用户自己注册
      在这里插入图片描述

    3.用户组管理

    通过新建用户组,将用户添加到组进行管理。只要对用户组设置权限后,组下的用户都会生效。
    在这里插入图片描述

    4.全局权限

    全局权限用来配置用户组所拥有的权限。

    4.1.全局权限添加用户组

    1.打开全局权限

    在这里插入图片描述

    2.编辑全局权限

    在这里插入图片描述

    3.添加用户组权限

    在这里插入图片描述

    5.空间权限

    5.1.配置空间权限

    1.打开空间权限

    在这里插入图片描述

    2.编辑空间权限

    在这里插入图片描述

    3.设置组的空间权限

    在这里插入图片描述

    展开全文
  • 数据库管理之用户权限管理

    千次阅读 2020-06-01 12:34:05
    用户权限管理本地环境理论基础一、权限分类:二、系统权限管理:三、实体权限管理权限管理操作一、创建新用户并授权二、连接新用户并载入数据三、查询系统权限 本地环境 windows10-64位 Oracle12c SQL Developer ...

    本地环境

    windows10-64位
    Oracle12c
    SQL Developer
    时间:2020-06-01

    理论基础

    一、权限分类:

    系统权限:
    系统规定用户使用数据库的权限。(系统权限是对用户而言)。
    实体权限:
    某种权限用户对其它用户的表或视图的存取权限(针对表或视图而言)。

    二、系统权限管理:

    1、系统权限分类:
    DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
    RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
    CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
    对于普通用户:授予connect, resource权限。
    对于DBA管理用户:授予connect,resource, dba权限。

    2、系统权限授权命令:
    系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)
    授权命令:grant connect, resource, dba to 用户名1 [,用户名2]…;
    普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。
    例:以system用户身份连接数据库之后,执行:
    create user cc identified by ccpassword ;
    grant resource, connect, DBA to cc;
    查询用户拥有哪里权限:
    select * from dba_role_privs;
    select * from dba_sys_privs;
    select * from role_sys_privs;
    删除用户: drop user 用户名 cascade;
    //加上cascade则将用户连同其创建的东西全部删除

    3、系统权限传递:
    增加WITH ADMIN OPTION选项,则得到的权限可以传递。
    grant connect, resource to CC with admin option; //可以传递所获权限

    4、系统权限回收:系统权限只能由DBA用户回收
    Revoke dba, resource from CC;

    5、删除用户
    drop user 用户名; //用户没有建任何实体
    drop user 用户名 CASCADE; // 将用户及其所建实体全部删除
    说明:当前正连接的用户不得删除。

    三、实体权限管理

    1、实体权限分类:
    select, update, insert, alter, index, delete, all //all包括所有权限
    execute //执行存储过程权限
    user01:
    grant select, update, insert on product to user02;
    grant all on product to user02;
    user02:
    select * from user01.product;
    // 此时user02查user_tables(连接中能显示的),不包括user01.product这个表,但如果查all_tables则可以查到,因为他可以访问。all_tables是某一用户所拥有的或有访问权限的表。user_tables是某一用户所拥有的表。
    2. 将表的操作权限授予全体用户:
    grant all on product to public;
    // public表示是所有的用户,这里的all权限不包括drop。
    select owner, table_name from all_tables; // 用户可以查询的表
    select table_name from user_tables; // 用户创建的表
    select grantor, table_schema, table_name, privilege from all_tab_privs;
    // 获权可以存取的表(被授权的)
    select grantee, owner, table_name, privilege from user_tab_privs;
    // 授出权限的表(授出的权限)

    1. DBA用户可以操作全体用户的任意基表(无需授权,包括删除):
      DBA用户:
      Create table stud02.product(id number(10), name varchar2(20));
      drop table stud02.emp;
      create table stud02.employee as select * from scott.emp;

    2. 实体权限传递(with grant option):
      user01:
      grant select, update on product to user02 with grant option;
      // user02得到权限,并可以传递。

    3. 实体权限回收:
      user01:
      Revoke select, update on product from user02; //传递的权限将全部丢失。

    说明:如果取消某个用户的对象权限,那么对于这个用户使用WITH GRANT OPTION授予权限的用户来说,同样还会取消这些用户的相同权限,也就是说取消授权时级联的。

    权限管理操作

    一、创建新用户并授权

    create user cc identified by ccpassword ;
    create user dd identified by ddpassword ;
    grant resource, connect, DBA  to cc,dd;
    

    二、连接新用户并载入数据

    连接cc:

    create table Reader
    (
        RNO	varchar2(4) primary key,
        Rname	varchar2(10) not null,
        Rsex	varchar2(4),
        Rage	integer,
        Rboss	varchar2(10),
        Raddress	varchar2(30)
    ) ;
    insert into Reader (RNO,Rname,Rage,Rsex,Rboss, Raddress) values('R001','张三',20,'男','李四','416');
    
    
    create table Book
    (
        BNO	varchar2(4),
        Bname	varchar2(50) not null,
        Bauthor	varchar2(50),
        Bpress	varchar2(50),
        Bprice	numeric(6,2), 
        primary key(BNO)
    );
    insert into book (BNO,Bauthor,Bname, bpress, bprice) values('B001','严蔚敏','数据结构','清华大学出版社',null);
    
    
    create table RB
    (
        RNO varchar2(4),
        BNO varchar2(4),
        RBdate date default sysdate,
        primary key(RNO,BNO),
        foreign key (RNO) references Reader(RNO),
        foreign key (BNO) references Book(BNO)
    );
    insert into RB (RNO,BNO) values ('R001','B001');
    
    

    Reader:
    在这里插入图片描述
    Book:
    在这里插入图片描述
    RB:
    在这里插入图片描述

    三、权限操作

    1.查询自己的权限,有多少种权限

    select * from user_role_privs;
    
    输出:
    USERNAME                                                                                                                         GRANTED_ROLE                                                                                                                     ADM DEL DEF OS_ COM INH
    -------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --- --- --- --- --- ---
    CC                                                                                                                               CONNECT                                                                                                                          NO  NO  YES NO  NO  NO 
    CC                                                                                                                               DBA                                                                                                                              NO  NO  YES NO  NO  NO 
    CC                                                                                                                               RESOURCE    
    

    2.查询用户拥有哪里权限,代码一行一行执行

    select * from dba_role_privs;
    select * from dba_sys_privs;
    select * from role_sys_privs;
    

    3.回收用户CC的部分权限:以SYSTEM的身份连接(可以在SQL DEVELOPER的右上角切换),在此连接中执行

    Revoke dba, resource from CC;
    

    注意:这时候在以CC身份创建表:

    Create Table Aa(cola int);
    
     输出:
     Table AA 已创建。
    

    为什么会成功?是不是觉得有问题,确实有问题,这里我们重新连接一下CC

    Create Table Aa(cola int);
    
     输出:
    在行: 1 上开始执行命令时出错 -
    Create Table Aa(cola int)
    错误报告 -
    SQL 错误: ORA-01031: 权限不足
    01031. 00000 -  "insufficient privileges"
    *Cause:    An attempt was made to perform a database operation without
               the necessary privileges.
    *Action:   Ask your database administrator or designated security
               administrator to grant you the necessary privileges
    

    失败是因为只有连接权限,不可以创建实体,不可以创建数据库结构。

    4.以CC和DD的身份分别建立连接,使得目前系统加上原来的SYSTEM共有三个连接(为识别方便,连接名和用户名一致)
    选择CC连接,执行:

    Create Table from_CC(conten char(1));
    Insert into from_cc values('a');
    select * from from_cc;
    

    显示:
    在这里插入图片描述
    选择DD连接,执行:

    select owner, table_name from all_tables where table_name='FROM_CC';
    

    在这里插入图片描述

    select * from from_cc;
    

    在这里插入图片描述
    这样查询是不行的,首先要给权利dd,而且dd用户也没有from_cc表。
    选择CC连接,执行:

    grant all on from_cc to dd;
    

    选择DD连接,执行:

    select * from from_cc;
    

    显示:
    在这里插入图片描述
    因为dd没有from_cc表。
    应该如此查询:

    select * from cc.from_cc;
    

    在这里插入图片描述

    选择DD连接,执行:

    Insert into cc.from_cc values('d');
    select * from cc.from_cc;
    

    在这里插入图片描述

    选择CC连接,执行:
    
    Revoke insert on FROM_CC from DD;
    

    在这里插入图片描述
    选择DD连接,执行:

    select * from cc.from_cc;
    

    在这里插入图片描述
    可以看到dd用户插入的数据没有了。
    连接dd用户:

    Insert into cc.from_cc values('y');  
    select * from cc.from_cc;
    

    在这里插入图片描述

    选择SYSTEM连接,执行:

    Revoke dba, resource from DD;
    

    在这里插入图片描述

    选择DD连接,执行:

    select * from cc.from_cc;
    

    在这里插入图片描述

    Insert into cc.from_cc values('z');  
    select * from cc.from_cc;
    

    在这里插入图片描述

    选择CC连接,执行:

    Revoke all on FROM_CC from DD;
    select * from cc.from_cc;  
    

    在这里插入图片描述
    没有显示前面成功插入的记录’y’、‘z’
    选择DD连接,执行:

    select * from cc.from_cc;
    

    显示前面成功插入的记录’y’、‘z’

    删除连接DD后,重新添加连接DD

    select * from cc.from_cc;
    

    在这里插入图片描述
    显示这个数据对象不存在。

    select * from user_role_privs;
    

    当前用户有多少种权限?
    在这里插入图片描述

    Create Table from_DD(ddd char(2));
    

    在这里插入图片描述

    选择SYSTEM连接,执行:

    grant resource to dd;
    

    选择DD连接,执行:

    Create Table from_DD(ddd char(2));
    

    不能执行
    删除连接DD后,重新添加连接DD

    Create Table from_DD(ddd char(2));
    Insert into from_dd values('甲');  
    select * from from_dd;
    

    在这里插入图片描述

    选择CC连接,执行:

    select * from dd.from_dd;
    

    不行。

    用户CC怎样才能看到from_dd表的所有记录?用户CC怎样才能为from_dd表添加记录?
    Dd重新连接,在dd执行grant all on from to cc;

    展开全文
  • 前端如何进行用户权限管理

    万次阅读 多人点赞 2019-05-21 10:11:57
    【前端如何进行用户权限管理】 1:问题: 假如在做一个管理系统,面向老师学生的,学生提交申请,老师负责审核(或者还需要添加其他角色,功能权限都不同)。 现在的问题是,每种角色登录看到的界面应该都是不...
  • Spring Boot实现简单的用户权限管理(超详细版)

    万次阅读 多人点赞 2019-08-06 15:15:52
    为了避免浪费时间进行不必要的阅读,这里先对项目进行...因为一个用户可以有多个角色,一个角色也可以被多个用户所拥有,角色和权限的关系也同理,这里主要利用多对多的映射关系将他们联系起来,对他们进行管理。 ...
  • 1、关于用户权限的几种情况举例: 2、解决思路: 明确一点我们还是要使用@auth.login_required和@auth.verify_password,因为这样可以把接口不公开暴露 我们可以把权限信息写入到token令牌中 我们可以把A、B...
  • 04 用户权限管理 实验报告

    千次阅读 2018-07-30 01:05:37
    04 用户权限管理 实验报告  广州大学学生实验报告  开课学院及实验室:计算机科学与工程实验室418B室 ...
  • 对于Saas业内在用户统一身份认证及授权管理领域,主要关注 4 个方面(4A管理)): 集中账号管理(Account)、集中认证管理(Authentication)、集中授权管理(Authorization)和集中审计管理(Audit), 简称 4A ...
  • java用户权限管理与角色设置(一)

    万次阅读 2018-05-04 19:20:28
    实现业务系统中的用户权限管理--设计篇 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台...
  • Flask——用户权限管理

    千次阅读 2017-08-17 21:19:44
    权限操作: 操作 位值 说明 关注用户 0b00000001(0x01) 关注其他用户 发表评论 0b00000010(0x02) 在别人写的文章中发表评论 写文章 0b00000100 发表文章 管理他人评论 0b00001000 查处他人不良评论 ...
  • 4Jenkins入门:用户权限管理(JAVA java 小虚竹)
  • 自从Redis6.0以来,大家呼吁了很久的权限管理功能(ACL[access control list 访问控制列表])终于发布了,通过此功能,我们可以设置不同的用户并对他们授权命令或数据权限。这样我们可以避免有些用户的误操作导致数据...
  • 1. 使用管理员打开要设置权限的项目。 2. 点击【Settings】–【Members】 3. 添加完成后,如下图所示。 4. 下表完整的列出了Guest,Reporter,Developer,Master,Owner对应的权限。 ...
  • Linux用户权限管理

    千次阅读 2022-03-28 20:47:41
    Linux用户权限管理前言一、管理用户账号用户账号概述用户标识UID (User IDentity,用户标识号)用户账号文件用户账号管理添加用户账号(useradd)设置/更改用户口令(passwd)修改用户账号属性(usermod)删除...
  • 软件系统中角色和用户权限管理

    千次阅读 2018-06-11 11:16:01
    主要是对软件系统中角色和用户权限管理的相关介绍,希望对大家有帮助!可查看图片
  • Hadoop用户权限管理及hdfs权限管理

    万次阅读 2018-05-08 16:11:53
    1.创建用户student1,所属分组为studentschown -R student1:students /home/hadoop/hadoop-2.7.6 root用户将hadoop的相关操作权限授予student12.修改Hadoop目录的权限 chmod -R 755 /home/hadoop/hadoop-2.7.63....
  • MinIO多用户权限管理

    千次阅读 2020-09-23 17:33:32
    这个主要是对 MinIO 的用户权限进行管理。避免出现误操作! 除了在服务器启动期间创建的默认用户外,MinIO还支持多个长期用户。服务器启动后,可以添加新用户,并且可以将服务器配置为拒绝或允许这些用户访问...
  • 统一用户权限管理系统(正式版)

    千次阅读 2015-01-08 21:11:56
    系统名称:统一用户权限管理系统  演示地址:http://tdog7.oschina.mopaas.com/    简介:本系统为统一的细粒度授权管理和用户统一身份管理及单点认证支撑平台。每个接入的系统都支持自定义权限、配置细粒度...
  • 1. 用户权限管理 01. 创建用户并分配权限 创建用户并分配系统权限 创建一个具有创建数据库权限的用户: CREATE USER joe WITH CREATEDB PASSWORD "GAUSS@123"; 给用户指定对象权限 将表student的select权限赋给用户...
  • 1.权限管理设计 Flask并没有提供单独的这种权限管理模块,所有的web系统的权限管理无疑是大同小异的,都是表之间的关联。本实例系统也采用比较大众化的方法,采用权限——>角色——>用户的方法实现。使用的方法则...
  • Jenkins用户权限管理

    千次阅读 2017-05-08 11:47:58
    jenkins权限管理 插件Role-based Authorization Strategy设置安全策略路径:系统管理-Configure Global Security-授权策略,选择Role-Based Strategy:save后,系统管理中出现Manager and Assign Roles选项用户权限设置...
  • Linux添加用户及用户权限管理

    万次阅读 多人点赞 2019-07-11 20:58:09
    Linux添加用户及用户权限管理 1.新建用户(组) ①用户 新建用户需要通过指令useradd来实现。 useradd的一些基本用法如下: useradd username 新建一个用户 useradd -u uid username 指定用户的uid useradd -g gid ...
  • centos用户权限管理

    万次阅读 2018-11-09 21:27:17
    普通用户能执行的操作很少,权限有限,获得权限的方法: 在普通用户模式下输入 su(或者su root),输入root用户密码,这种是切换用户模式。进而执行后续需要权限的操作 注:使用 exit命令可以退出root模式 给普通...
  • 用户权限管理

    万次阅读 2013-02-28 21:27:56
    用户权限管理涉及的几个概念 用户分类:系统用户、超级用户、管理员用户、DBA用户、领导用户、专家用户、操作员用户、客户用户、…… 系统权限:即对不同用户使用系统资源(功能菜单项、按钮、输入控件等)的...
  • 没想到,Excel还能实现权限管理系统。VBA真是要逆天了。 Option Explicit Private Sub Workbook_Open() '打开工作薄,不让用户看见工作表内容,所以将工作薄最小化 ...
  • HDFS用户权限管理

    万次阅读 2015-11-08 10:34:38
    hdfs超级用户创建和设置 CentOS 6.6 安装 HDFS 2.7.1 设计思想很多设计原子POSIX文件系统,可以参考之前的博客 Linux用户管理命令 文件和
  • java用户权限管理与权限设置(二)

    千次阅读 2018-05-04 19:23:54
    实现业务系统中的用户权限管理--实现篇 在设计篇中,我们已经为大家阐述了有关权限管理系统的数据库设计,在本篇中,我们将重点放在其实现代码部分。为了让你能够更直接更有效的看到全部动作的代码,我们使用“动作...
  • Ubuntu/Linux用户管理与权限管理(超详细解析)

    千次阅读 多人点赞 2019-09-12 16:29:19
    Ubuntu/Linux用户管理与权限管理用户用户组根用户——root用户用户组创建与删除创建新用户修改用户用户账号有关的系统文件(查看用户/用户组)文件/目录权限管理 用户用户组 根用户——...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,098,681
精华内容 439,472
关键字:

用户权限管理

友情链接: Huffman压缩.zip