MySQL札记8_DCL(数据控制语言)

作者: 皮皮大 | 来源:发表于2019-08-01 20:54 被阅读68次

数据控制语言DCL主要是对数据库中的登录和用户的权限进行控制的语言,包含:

  • 用户登录MySQL数据库
  • 修改用户密码及忘记密码如何解决
  • 创建普通用户及授权
  • 撤销权限revoke
  • 查看权限及删除用户

关于root账户

默认登录

默认情况下,MySQL数据库是指允许root账户登录并且在本机上登录的。

  • -uroot表示root账户
  • -p表示需要密码
  • 没有-h表示默认是本机localhost或者127.0.0.1登录
image.png

登录查看账户

MySQL数据库的服务端口号是3306,通过在mysql数据库的user表中查看登录数据库用户信息:

mysql> show databases;  # 查看所有的数据库
mysql> use mysql;   # 选择mysql数据库
mysql> show tables;   # 查表数据库中的所有表
mysql> select user, host from user;   # 查看这个表中的user和host信息
image.png

删除用户

需要注意的是删除了某个用户之后必须进行权限的刷新:

mysql> delete from user where host="%";   # 删除host为%的用户
Query OK, 1 row affected (0.01 sec)

mysql> flush privileges;  # 刷新权限
Query OK, 0 rows affected (0.00 sec)

下图和上图进行对比发现少了%的用户

image.png

注意:当在实际的开发项目中,项目和数据服务器不再同一个地方,可以指定ip连接进行访问。

mysql> update user set host="192.168.1.10" where user="root";
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select user,host from user;

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
image.png

当退出mysql重新进入,需要指定IP地址,就是上面设置的IP

image.png

密码问题

修改密码

同样需要进入mysql数据库的user表中,为了方便,笔者将IP又改回去啦:


image.png
update user set password=PASSWORD("admin")  where user="root";   # 将root账户的密码改为admin

mysql> flush privileges;   # 更新操作
Query OK, 0 rows affected (0.00 sec)

忘记密码

  • 如果忘记了密码,需要进入配置文件中
ubuntu@peter:~$ vim /etc/mysql/mysql.conf.d/mysqld.cnf
  • 找到下图中的skip-grant-tables,将前面的#去掉,就是取消注释:取消权限认证,后台开启新的进程免密进入MySQL

    image.png
  • 重启MySQL服务:systemctl restart mysql

  • 通过mysql直接进入:

image.png
  • 然后按照上面的步骤重新设置密码即可
mysql> show databases;
mysql> use mysql;
mysql> select user, password  from user;
# 接下来重新设置密码即可
image.png

创建新用户及授权

创建用户

  • 进入mysql数据库后,创建一个test用户,并且刷新:
image.png
  • 尝试登陆,创建成功:


    image.png
  • %使用,匹配所有:
    如果想所有的IP都可以通过test账户访问mysql,将host指定为%;危险操作,谨慎使用

>update user set host="% where user="test" ;     # 谨慎操作

用户授权

  • 授权
    select、insert、delete等操作权限授权给新建的用户:use

    image.png
  • 测试授权是否成功


    image.png
  • 进入mysql数据库中,选中peter这个数据库中,创建一个test

    image.png
  • create权限成功

    image.png
  • insert和select 权限成功


    image.png
  • 将test账户的所有权限给所有数据库,谨慎操作

grant all privileges on *.* to "test"@"192.168.21.136";

撤销权限

撤销权限使用的是revoke;承接上面的栗子,撤销test用户的select权限:

  • revoke:撤销
  • select:即将撤销的权限
  • peter:从哪个数据库中撤销
  • "test"@"192.168.21.136":用户及密码
revoke select on peter.* from "test"@"192.168.21.136";
image.png

撤销权限一定要通过root账户进入MySQL;否则出现权限不足的问题

image.png

查看权限和删除用户

查看权限

show grants for 用户名@IP地址;

image.png

删除用户

drop user 用户名@IP地址;

image.png image.png

相关文章

  • MySQL札记8_DCL(数据控制语言)

    数据控制语言DCL主要是对数据库中的登录和用户的权限进行控制的语言,包含: 用户登录MySQL数据库 修改用户密码...

  • mysql之数据控制语言

    一、用户管理 mysql中的所有用户,都存储在系统数据库(mysql)中的user 表中——不管哪个数据库的用户,...

  • MySQL增删改查(基础)

    2020-09-14 MySQL增删改查操作 DQL:数据查询语言DML:数据操作语言DCL:数据控制语言DDL:...

  • mysql笔记-数据控制语言DCL

    大家好,我是天空之城,今天给大家带来,mysql数据控制语言DCL。sql语言按功能分为四类,DDL DML D...

  • MYSQL基础知识

    一、数据定义语言DDL 二、数据操作语言DML 三、数据查询语言DQL 四、数据控制语言DCL 数据控制语言DCL...

  • MySql最佳实践-札记

    一、表: 表和字段名字一般采用"_" 而不是使用驼峰; 指定表级别字符集为“CharsetEncoding = u...

  • [云南支教札记]目录

    云南支教札记(一)【启程】 云南支教札记(二)【印象】 云南支教札记(三)【霓裳】 云南支教札记(四)【秘境】 云...

  • DCL:数据控制语言

    什么是权限 限制一个用户能做什么,在MySQL中,可以设置全局权限、指定数据库权限、指定表权限、指定字段权限 DC...

  • DCL 数据控制语言

    授予用户权限 GRANT 权限 TO 用户权限分类: create session 登录 create table...

  • 02-25 Mysql 基础语法

    -- sql 语法-- DDL(数据定义语言)-- DML(数据操作语言 )-- DCL(数据控制语言)-- --...

网友评论

    本文标题:MySQL札记8_DCL(数据控制语言)

    本文链接:https://www.haomeiwen.com/subject/ejthdctx.html