MySQL数据库(十):用户授权与撤销授权

前言: 1.mysql数据库服务在不授权的情况下,只允许数据库管理员从数据库服务器本机登陆. 2.系统管理员才有修改数据库管理员密码的权限.

一、用户授权(grant) 默认只有数据库管理员从数据库服务器本机登陆才有授权权限

1.授权命令格式: 1.1从客户端登陆的时候不需要密码

grant 权限列表  on 数据库名 to 用户名@"客户端地址";

1.2 授权用户可以从网络中的任意地址登陆到mysql server服务器

grant 权限列表 on 数据库名 to 用户名;

1.3 设置授权用户连接mysql server服务器时候的密码和授权权限

grant 权限列表 on  数据库名  to  用户名@"客户端地址" identified by "密码" with grant option;

identified by "密码" :从客户端登陆的时候需要密码(可选项,若不指定,授权用户登陆时没有密码) with grant option :授权用户从客户端地址登陆之后有授权的权限(可选项,让授权用户有授权权限,若不设置,授权用户无授权权限)

2.条件的表示方法 1.1 权限列表的表示

usage:无权限
all  :所有权限
insert:插入
update:更新(可以指定只更新某个字段update(name,age))
delete:删除

1.2数据库名的表示方式

*.*   库.表:所有库所有表
数据库名.*:对数据库中的所有表(某个库)
数据库名.表名:某个表

注:授权使用的库可以不用事先存在

1.3用户名的表示方式 注:授权时自定义,要有表示性,信息存储在mysql库中的user表中

1.4客户端地址的表示方式(可选项,不设置时,匹配所有地址)

%    所有地址
 
192.168.4.%   某个网段
192.168.4.205  某个IP
 
pc1.tarena.com  主机名
%.tarena.com   某个区域

注:工作中一般都是用ip地址来表示客户端地址

例子: 授权root用户从192.168.4.205使用后123456密码连接,并且有授权权限。

mysql> grant all on *.* to root@"192.168.4.205" identified by "123456" with grant option;
Query OK, 0 rows affected (0.00 sec)

3.关于授权的其他命令

1.1 查看自己的权限

show grants;

1.2 显示当前登陆的用户是谁

select user();

4.授权信息的存放位置 服务器端使用 mysql库存储授权信息 授权信息保存在mysql下不同表里,不同的授权信息使用不用的表保存.

1.1 user表 保存授权用户的授权信息

例如: 查看webuser用户的授权信息

mysql> select * from mysql.user where user="webuser"\G;
*************************** 1. row ***************************
                  Host: %
                  User: webuser
              Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9
           Select_priv: N
           Insert_priv: N
           Update_priv: N
           Delete_priv: N
           Create_priv: N
             Drop_priv: N
           Reload_priv: N
         Shutdown_priv: N
          Process_priv: N
             File_priv: N
            Grant_priv: N
       References_priv: N
            Index_priv: N
            Alter_priv: N
          Show_db_priv: N
            Super_priv: N
 Create_tmp_table_priv: N
      Lock_tables_priv: N
          Execute_priv: N
       Repl_slave_priv: N
      Repl_client_priv: N
      Create_view_priv: N
        Show_view_priv: N
   Create_routine_priv: N
    Alter_routine_priv: N
      Create_user_priv: N
            Event_priv: N
          Trigger_priv: N
Create_tablespace_priv: Y
              ssl_type: 
            ssl_cipher: 
           x509_issuer: 
          x509_subject: 
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: 
      password_expired: N
1 row in set (0.00 sec)
 
ERROR: 
No query specified

查看用户root从192.168.4.205的登陆权限

mysql> show grants for root@"192.168.4.205"\G;
*************************** 1. row ***************************
Grants for root@192.168.4.205: GRANT SELECT, INSERT, UPDATE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'root'@'192.168.4.205'
1 row in set (0.00 sec)
 
ERROR: 
No query specified

1.2 db表 记录授权用户对库的权限信息 例如: 查看webuser用户数据库的权限信息

mysql> select * from mysql.db where user="webuser"\G;
*************************** 1. row ***************************
                 Host: %
                   Db: bbsdb
                 User: webuser
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: Y
         Execute_priv: Y
           Event_priv: Y
         Trigger_priv: Y
1 row in set (0.00 sec)
 
ERROR: 
No query specified

1.3 tables_priv表 记录授权用户对表的权限信息 例如: 查询webuser用户的表权限信息

mysql> select * from mysql.tables_priv where user="webuser";
Empty set (0.00 sec)

1.4 columns_priv 记录授权用户对表中某个字段的权限信息 例如: 查看webuser用户的字段权限信息

mysql> select * from mysql.columns_priv where user="webuser";
Empty set (0.00 sec)

*注:如果想要一个用户有授权权限的话,需要让此用户对mysql库有权限

5.授权用户如何重置/修改登录密码

格式:

set password=password("密码");

例如: 数据库管理员重置授权用户的登陆密码

set password for 用户名@"客户端地址"=password("新密码");

二、权限撤销(revoke)

1.命令格式:

revoke  权限列表  on  数据库 from  用户名@"客户端地址";

注意:撤销的时候,只有对数据库有过授权的才可以撤销

2.条件的表示方法 *权限列表、数据库名、用户名、客户端地址的表示方法和授权时候的表示方式是一样的

例子:

1.1 撤销管理员用户从客户端192.168.4.205 登陆后,对所有库里所有表中记录的删除权限

revoke delete on *.* from root@"192.168.4.205";

1.2 撤销root@192.168.4.205的登陆权限

delete from mysql.user where user="root" and host="192.168.4.205";

1.3 撤销所有权限

revoke all on *.* from root@"192.168.4.205";

1.4 撤销授权权限

revoke grant option on *.* from roo@192.168.4.205;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux运维学习

linux学习第五十篇:MySQL创建用户以及授权,常用sql语句,MySQL数据库备份恢复

MySQL创建用户以及授权 给用户user1授权,指定IP:127.0.0.1,只有在这个IP下才能登陆,密码为11111,*.*是可以访问所有mysql文件,...

18810
来自专栏DT乱“码”

linux下操作 mysql的基本命令

1, 创建mysqld数据库的管理用户: 要把root用户设置为管理员,我们应该运行下面的命令;     [root@linuxsir01 root]# mys...

3016
来自专栏程序员同行者

mysql权限与安全

1904
来自专栏xiaoheike

linux 创建sudo账号.md

root ALL=(ALL) ALL 在该行下面添加: username ALL=(ALL) ALL

1141
来自专栏逸鹏说道

30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

阅读目录 概述: 一、事务 二、锁 三、阻塞 三、隔离级别 四.死锁 以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能...

2875
来自专栏james大数据架构

Access数据库多表连接查询

第一次在Access中写多表查询,就按照MS数据库中的写法,结果报语法错,原来Access的多表连接查询是不一样的 表A、B、C,A关联B,B关联C,均用ID键...

2866
来自专栏数据和云

12c create spfile的警示

在12c中,create spfile命令又有了新的参数变更,引入了as copy选项,这个变化是由于一个Bug引入的。 通过以下的测试和验证过程,大家会发现新...

3025
来自专栏杨建荣的学习笔记

MySQL数据导入导出牛刀小试(r5笔记第3天)

最近学习了下MySQL中数据的导入导出,发现功能点真是丰富,很方便很快捷。 这些导入导出的方式还是有不少的细节的,在此先不做扩展和深入分析。 --数据导出 方式...

3744
来自专栏耕耘实录

Linux(RHEL7及CentOS7)下glibc版MySQL5.7.20的安装

版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

3232
来自专栏腾讯云数据库团队的专栏

PostgreSQL 的 MVCC 机制解析

PostgreSQL 是通过 MVCC (Multi-Version Concurrency Control) 来保证事务的原子性和隔离性,本文通过一些事例对 ...

6690

扫码关注云+社区

领取腾讯云代金券