MySQL学习——管理用户权限

摘要:本文主要学习了使用DCL语句管理用户权限的方法。

了解用户权限

什么是用户

用户,指的就是操作和使用MySQL数据库的人。使用MySQL数据库需要用户先通过用户名和密码进行连接,然后才能进行操作,不同的用户可以设置不同的权限,让某些用户只能操作权限范围内的数据,也可以让某些用户只能查询不能修改。

在MySQL数据库中,所有的用户信息都是保存在mysql数据库的user表中的。

查看user表

使用 desc user; 命令查看user表的结构:

 mysql> desc user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) | NO | | 0 | |
| plugin | char(64) | YES | | mysql_native_password | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
43 rows in set (0.00 sec) mysql>

在MySQL数据库中,对用户的管理是通过对应的Host和User共同组成的主键来区分的。

其中,User代表用户的用户名,Host代表允许访问的客户端(IP地址或者是主机地址),Host使用*表示所有的客户端都可以访问。

查询user表数据:

 mysql> select host, user, password from user;
+-----------+------+----------------------+
| host | user | password |
+-----------+------+----------------------+
| localhost | root | ******************** |
| 127.0.0.1 | root | ******************** |
| ::1 | root | ******************** |
+-----------+------+----------------------+
3 rows in set (0.00 sec) mysql>

在安装MySQL数据库的时候,如果没有创建匿名用户,那么在user表里只有一个root用户。

刷新设置

MySQL新设置用户或更改密码后需用 flush privileges 刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动服务器,来使新设置生效。

创建用户

两种方式

创建用户的方式有两种,一种是使用DML语句直接向user表里插入数据,另一种是使用DDL语句创建用户。

如果使用DML语句直接向user表里插入数据,那么在插入Password字段时,需要先进行加密,保存加密后的密文。如果使用DDL语句创建用户,则不需要考虑加密的问题,语句会自动将密码进行加密。

语法

 create user 用户名@主机地址 identified by 明文密码;

其中, @主机地址 可以省略,则表示任何客户端都可以使用这个用户访问数据库。 identified by 铭文密码 也可以省略,表示不需要密码就可以登录。

实例

 mysql> create user 'abc' identified by '';
Query OK, 0 rows affected (0.00 sec) mysql>

删除用户

两种方式

和创建用户相似,删除用户也有两种方式。

语法

使用DML语句删除:

 delete from user where user=用户名 and host=主机地址;

使用DDL语句删除:

 drop user 用户名@主机地址;

实例

使用DML语句删除:

 mysql> delete from user where user = 'abc' ;
Query OK, 1 row affected (0.00 sec) mysql>

使用DDL语句删除:

 mysql> drop user 'abc';
Query OK, 0 rows affected (0.00 sec) mysql>

修改用户密码

两种方式

修改密码也有两种方式:

一种是使用 password() 方法加密后更新,5.6版本以及以前的版本需要使用这种方式。

一种是使用DCL语句进行更新,5.7版本以及之后的版本需要使用这种方式。

语法

使用DML语句修改,并用 password() 方法对密码加密:

 update user set password=password(明文密码) where user=用户名 and host=主机地址;

使用DCL语句修改:

 alter user 用户名@主机地址 identified by 明文密码;

实例

使用DML语句修改,并用 password() 方法对密码加密:

 mysql> update user set password=password('') where user='abc' ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql>

使用DCL语句修改:

 mysql> alter user 'abc' identified by '';
Query OK, 0 rows affected (0.00 sec) mysql>

用户授权

语法

 grant 权限列表 on 库名.表名 to 用户名@主机地址 indentified by 明文密码 [with grant option][with admin option]

其中,撤消带有 admin option 的用户权限时,连带的权限将保留,撤销带有 grant option 的用户权限时,连带的权限也会被撤销。

实例

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

取消授权

语法

 revoke 权限列表 on 库名.表名 from 用户名@主机地址

实例

 mysql> revoke all on *.* from 'root'@'%';
Query OK, 0 rows affected (0.00 sec) mysql>

MySQL学习——管理用户权限的更多相关文章

  1. mysql学习(用户权限管理)

    1. 添加数据库用户 create user 'username'@'host' identified by 'password'; 提示: 如果想让该用户可以从其他主机登陆,host可以设置为'%' ...

  2. MySQL学习之用户管理

    用户权限管理 用户权限管理:在不同的项目中给不同的角色(开发者)不同的操作权限,为了保证数据库数据的安全. 简单点说:有的用户可以访问并修改这个数据,而有些用户只能去查看数据,而不能修改数据.就如同博 ...

  3. MySQL学习——管理事务

    MySQL学习——管理事务 摘要:本文主要学习了使用DCL语句管理事务的操作. 了解事务 什么是事务 事务是一组逻辑处理单位,可以是执行一条SQL语句,也可以是执行几个SQL语句. 事务用来保证数据由 ...

  4. mysql学习笔记二 —— 权限体系

    要点: 1.MySQL的API2.MySQL的相关文件3.MySQL的权限体系 1.MySQL的API 应用程序接口 (application program interface) 1.1 命令行中的 ...

  5. MySQL 数据库赋予用户权限操作表

    MySQL清空数据库的操作:truncate table tablename; MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户  一.grant 普通数 ...

  6. MySQL授权(用户权限)

    一.mysql查询与权限 (二)授权 用户管理: 设置用户密码 前期准备工作: 停止服务 将配置文件当中的skip-grant-tables删除掉 重启服务: 执行修改命令 查看用户状态(如果数据过多 ...

  7. keycloak管理用户权限

    一.在keycloak中定义基础数据 1.realm 如果多个模块使用不同的用户权限,就分realm 如果多个模块共用一套用户权限,就顶一个一个realm 2.每个模块是一个client-app 3. ...

  8. centos7管理用户权限

    1.Centos创建用户并授权: https://blog.csdn.net/bug4pie/article/details/79761443 https://www.jb51.net/article ...

  9. MySQL中导出用户权限设置的脚本

    在对MySQL数据库进行迁移的时候,有时候也需要迁移源数据库内的用户与权限.对于这个迁移我们可以从mysql.user表来获取用户的相关权限来生成相应的SQL语句,然后在目标服务器上来执行生成的SQL ...

随机推荐

  1. 2019icpc上海站 打星体验,首次感想 D K代码

    暑期训练以来首次参赛,体验还行吧,过程有些战战兢兢. 刚开始以为是正式队,热身赛只过了一题,有很大的压力,正赛前一天晚上才知道是打星队,有点如释重负的感觉.也幸好都是打星队,不然真的有可能打铁,虽然实 ...

  2. Leetcode题解 - 链表简单部分题目代码+思路(21、83、203、206、24、19、876)

  3. HeadFirst设计模式<1>

    HeadFirst设计模式<1> 1 策略模式 鸭子飞行和嘎嘎叫策略 2 工厂模式 简单工厂 工厂方法 抽象工厂 简单工厂简单的pizza工厂 通过一个工厂类的方法,创建和返回对象实例 原 ...

  4. js数组对象过滤——filter,find,some,every

    1.filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素.     原数组不变     不会对空数组进行检测 let arr1 = [1,2,3,4] let ...

  5. JavaScript 递归遍历json串获取相关数据

    递归遍历json串获取相关数据   by:授客 QQ:1033553122 1.   测试数据 // 导航菜单 [ { id: 1, parentId: 0, parentName: null, na ...

  6. ES6 解构 destructuring

    解构的作用:简化书写长度,提升开发效率. 解构对象 在开发中我们常用到使用ajax请求数据,并且把数据渲染到页面上.可能这个数据返回的对象或数组.例如返回一个obj{name:'zwq',age:18 ...

  7. English: Class GXX

    ######################################## GGGGG GG GG GG GG GGGG GG GGG GGGGGG author:enomothem date: ...

  8. Solr实现全文搜索

    1.1 Solr是什么? Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展 ...

  9. OAuthon2.0机制详解

    最近在忙企业微信和钉钉的第三方应用开发,需要获取一些信息,第一个就是这个OAuthon2.0,先详细了解下概念和流程 一.应用场景 我们要想用第三方播放器播放你的云盘账号里面的一些秘密视频资源,为了要 ...

  10. 大数据基础--R语言(刘鹏《大数据》课后习题答案)

    1.R语言是解释性语言还是编译性语言?   解释性语言 2.简述R语言的基本功能.   R语言是一套完整的数据处理.计算和制图软件系统,主要包括以下功能: (1)数据存储和处理功能,丰富的数据读取与存 ...