Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >基础SQL-DCL语句-创建用户-授权用户-撤销授权-查看权限-删除用户-修改用户密码

基础SQL-DCL语句-创建用户-授权用户-撤销授权-查看权限-删除用户-修改用户密码

作者头像
Devops海洋的渔夫
发布于 2022-01-17 06:15:03
发布于 2022-01-17 06:15:03
1.5K00
代码可运行
举报
文章被收录于专栏:Devops专栏Devops专栏
运行总次数:0
代码可运行

8. 基础SQL-DCL语句-创建用户-授权用户-撤销授权-查看权限-删除用户-修改用户密码

我们一般默认使用的都是root用户,超级管理员,拥有全部的权限。但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限来管理和维护数据库。

1. 创建用户

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
关键字说明:
1. 用户名:将创建的用户名
2. 主机名:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
3. 密码:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

# 备注: 用户信息是保存在mysql.user表中
1. host: 该用户所允许访问的主机
 ::1 (ipv6的本地回环地址的简写)
2. user : 用户名
3. password : 经过加密之后的密码

常见的加密方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 加密
1. 用户的密码不可能明文保存在数据库中的,不安全
2. 加密的相关概念
 a. 给一个女孩子发信息: I love you.   
  (明文: 原始的数据)
 b. 计算方法: 字母表移动
     (加密算法: 凯撒加密)
 c. 右移3位
  (密钥: 加密的参数)
    d. 结果 :  L oryh brx.
     (密文: 明文经过加密算法得到的数据)
     
3. 凯撒加密算法的破解
 a. 统计学: 频率分析法
  1). 缴获了大量的密文
  2). 平时字母表的使用发现: e出现的频率最高
  3). 密文中发现: h出现的频率最高
  4).: h是由e得到的
 b. 内奸透露算法规则
 
4. 现代的加密算法
 算法公开, 隐藏密钥
 a. 可逆算法
  1). 对称加密 : 加解密使用的是同一把密钥
  2). 非对称加密 : 加解密使用的是不同的密钥
  3). 破解关键: 密钥 
 b. 不可逆算法(md5,sha...)
  一个明文  ->  一个密文
  碰撞: 多个不同明文,得到同一密文(碰撞率很低)
  告诉你密文,告诉你算法, 你得不出明文
  破解: 暴力破解(遍历)
  
  md5算法: 王小云教授

具体操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- user1用户只能在localhost这个IP登录mysql服务器
mysql> CREATE USER 'user1'@'localhost' IDENTIFIED BY '123@abcABC';
Query OK, 0 rows affected (0.00 sec)

-- user2用户可以在任何电脑上登录mysql服务器
mysql> CREATE USER 'user2'@'%' IDENTIFIED BY '123@abcABC';
Query OK, 0 rows affected (0.00 sec)

2. 授权用户

用户创建之后,基本没什么权限!需要给用户授权

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 登录用户 user1
[root@server01 mysql5.7.17_install]# mysql -uuser1 -p
Enter password: 

-- 查看该用户的数据库权限,可以发现基本没有什么权限。如果要操作其他数据库,只能给该用户进行授权
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

授权格式:GRANT 权限1, 权限2... ON 数据库名.表名 TO '用户名'@'主机名';

关键字说明:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1. GRANT 授权关键字
        授予用户的权限,如SELECTINSERTUPDATE等。如果要授予所的权限则使用ALL
2. 数据库名.表名:
  该用户可以操作哪个数据库的哪些表。如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如`.*`
3. '用户名'@'主机名'
  给哪个用户授权

具体操作:

2.1 首先登录 root 用户,给 user1 用户分配对test这个数据库操作的权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON test.* TO 'user1'@'localhost';

执行如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 1. 登录 root 用户给 user1 用户设置数据库 test 权限
[root@server01 mysql5.7.17_install]# mysql -uroot -p
-- 设置权限
mysql> GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON test.* TO 'user1'@'localhost';
Query OK, 0 rows affected (0.00 sec)

-- 2.切换登录 user1 用户
[root@server01 mysql5.7.17_install]# mysql -uuser1 -p

-- 查看所有数据库,发现以及有 test 数据库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)

mysql> 

2.2 登录 root 用户,给user2用户分配对所有数据库操作的权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GRANT ALL ON *.* TO 'user2'@'%';

执行如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 1. 登录root用户,给user2用户授权
[root@server01 mysql5.7.17_install]# mysql -uroot -p

mysql> GRANT ALL ON *.* TO 'user2'@'%';
Query OK, 0 rows affected (0.00 sec)

-- 2. 切换登录 user2 用户,查看可以操作所有数据库
[root@server01 mysql5.7.17_install]# mysql -uuser2 -p

mysql> show databases;
+---------------------------+
| Database                  |
+---------------------------+
| information_schema        |
| assetinfo                 |
| book                      |
| dailyfresh                |
| db1                       |
| db3                       |
| flask_ex                  |
| ihome                     |
| jumpserver                |
| msg_box                   |
| mysql                     |
| performance               |
| performance_schema        |
| performance_visualization |
| sys                       |
| test                      |
| testdb                    |
| userdemo                  |
+---------------------------+
18 rows in set (0.00 sec)

mysql> 

3. 撤销授权

REVOKE 权限1, 权限2... ON 数据库.表名 FROM '用户名'@'主机名';

具体操作:

撤销user1用户对test操作的权限

“撤销之后, user1用户需要下次登录才生效 ”

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
REVOKE ALL ON test.* FROM 'user1'@'localhost';

image-20210207234821114

4. 查看权限

SHOW GRANTS FOR '用户名'@'主机名';

具体操作:

  • 查看user2用户的权限
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SHOW GRANTS FOR 'user2'@'%';
+--------------------------------------------+
| Grants for user2@%                         |
+--------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'user2'@'%' |
+--------------------------------------------+
1 row in set (0.00 sec)

mysql> 

5. 删除用户

DROP USER '用户名'@'主机名';

具体操作:

  • 删除user2
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> DROP USER 'user2'@'%';
Query OK, 0 rows affected (0.00 sec)

image-20210207235509981

6. 修改用户密码

6.1 使用 mysqladmin 修改 管理员 或者 普通用户 密码

mysqladmin -uroot -p password 新密码( 新密码不需要加上引号)

“注意:需要在未登陆MySQL的情况下操作。 ”

具体操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqladmin -uroot -p password 新密码
输入老密码

执行如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 1.修改user1的密码为 321@abcABC
[root@server01 ~]# mysqladmin -uuser1 -p password '321@abcABC'
Enter password: -- 2.输入旧密码
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@server01 ~]# 
-- 3.使用新密码登录
[root@server01 ~]# mysql -uuser1 -p'321@abcABC'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.7.17-log MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

6.2 登录root用户,修改普通用户密码

set password for '用户名'@'主机名' = password('新密码');

“注意:需要在登陆MySQL的情况下操作。 ”

具体操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> set password for 'user1'@'localhost' = password('456@abcABC');
Query OK, 0 rows affected, 1 warning (0.00 sec)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL 权限操作
  MySQL 权限系统保证所有的用户只执行允许做的事情。当连接 MySQL 服务器时,用户的身份由用户从那儿连接的主机和用户指定的用户名来决定。连接后发出请求后,系统根据用户的身份和用户想做什么来授予权限。MySQL 中采用用户名 + 主机名来识别用户的身份。例如,从 abc.com 连接的用户 root 不一定和从 bcd.com 连接的 root 是同一个人。MySQL 通过允许你区分在不同的主机上碰巧有同样名字的用户来处理它,可以对 root 从 abc.com 进行的连接授与一个权限集,而为 root 从 bcd.com 的连接授予一个不同的权限集。MySQL存取控制包含2个阶段:  ♞ 阶段1:服务器检查是否允许你连接。  ♞ 阶段2:假定能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施它。
Demo_Null
2020/09/28
2.9K0
MySQL 权限操作
MySQL DCL语句
数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权。由 GRANT 和 REVOKE 两个指令组成。
星哥玩云
2022/09/15
2.2K0
MySQL DCL语句
Mysql创建用户并授权
一、Mysql创建用户并授权 mysql 默认的账户也是root,同linux一样也是超级管理员,权利特别大,所以我们不可以随便就把mysql密码告诉其他人。 另外一种情况,我们的数据库中有很多个库和表,针对不同的库和表有着不同的权限,所以我们就需要针对某个用户授权某一个指定的库,或者某个表有权限。 1.1 授权用户访问: grant all on *.* to 'user1'@'127.0.0.1' identified by 'asd9577'; grant:授权; *.*:所有的库; all:所有
老七Linux
2018/05/09
5.6K0
MySQL 用户与授权管理详解
做为Mysql数据库管理员管理用户账户,是一件很重要的事,指出哪个用户可以连接服务器,从哪里连接,连接后能做什么。Mysql从3.22.11开始引入两个语句来做这件事,GRANT语句创建Mysql用户并指定其权限,而REVOKE语句删除权限。CREATE和REVOKE语句影响4个表
tnt阿信
2020/08/05
2.1K0
13.4 mysql用户管理
mysql用户管理目录概要 grant all on . to 'user1' identified by 'passwd'; grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd'; grant all on db1.* to 'user3'@'%' identified by 'passwd'; show grants; show grants for user2@192.168.133.
运维小白
2018/02/06
8030
DCL数据库控制语言的详细用法
我们现在默认使用的都是root用户,超级管理员,拥有全部的权限。但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限来管理和维护数据库。
绿水长流z
2024/06/18
2820
DCL数据库控制语言的详细用法
MySQL用户管理、常用sql语句、数据库备份
说明: 因为指定登录主机为localhost,所以该用户默认使用(监听)本地mysql.socket文件,不需要指定IP即可登录。
阿dai学长
2019/04/03
2.2K0
数据库分配权限
我们数据库一般默认使用的都是root用户,超级管理员,拥有全部的权限。但是在实际业务场景中,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以,我们应该可以根据不同的项目建立不同的用户,分配团队不同的权限来管理和维护各个项目的数据库;
框架师
2019/09/19
1.6K0
数据库分配权限
入门MySQL——用户与权限
前面几篇文章为大家介绍了各种SQL语法的使用,本篇文章将主要介绍MySQL用户及权限相关知识,如果你不是DBA的话可能平时用的不多,但是了解下也是好处多多。
MySQL技术
2019/09/08
2K0
MySQL5.7 添加用户、删除用户与授权
MySQL5.7 mysql.user表没有password字段改 authentication_string;
小贝壳
2020/03/05
1.7K0
mysql安全权限的讲解
MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用。如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接。
张哥编程
2024/12/19
1080
MySQL 之用户和权限管理
在MySQL 5.7.24中,关于用户及用户权限的相关信息,都保存在了mysql库中的user表中,可以将user表中大致分为用户列、权限列、安全列、资源控制列这几种。
小手冰凉
2020/05/21
2K0
Mysql5.7 用户授权和密码修改
三、数据库开启主从后,从库为了防止别人误修改文件,开启只读模式,导致密码不能正确修改
Linux运维技术之路
2022/06/07
1.2K0
Mysql5.7 用户授权和密码修改
Mysql 中的三种创建用户的方式
MySQL支持使用CREATE USER语句创建用户,使用GRANT语句创建用户,也可以通过操作mysql数据库下的user数据表来创建用户。
跟着飞哥学编程
2023/03/11
3.7K0
mysql学习总结05 — 用户权限
mysql中所有用户信息保存在mysql数据库下的user表中。在安装mysql时,如果不创建匿名用户,那么默认用户只有root超级用户。mysql使用host(允许访问的IP或者主机地址)和user(用户名)共同组成主键来区分用户。如果host为%,表示所有用户(客户端)都可访问
CS逍遥剑仙
2018/06/24
1.4K0
mysql学习总结05 — 用户权限
Mysql系列 - 第3天:管理员必备技能(必须掌握)
在玩mysql的过程中,经常遇到有很多朋友在云上面玩mysql的时候,说我创建了一个用户为什么不能登录?为什么没有权限?等等各种问题,本文看完之后,这些都不是问题了。
路人甲Java
2019/09/16
6500
mysql-创建用户和授权
我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作。包括select、update、delete、update、grant等操作.
py3study
2018/08/03
2.9K0
第十一章《mysql用户与权限》
mysql关于用户的信息保存在mysql.user表当中,关于用户的权限主要是存储在mysql库中(user、db、host、tables_priv、columns_priv)这5个表中。
Java架构师必看
2021/06/02
8080
第十一章《mysql用户与权限》
MySQL数据库——DCL管理用户以与授权&忘记root密码的解决方案
1)添加用户:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
Winter_world
2020/09/25
1.2K0
MySQL数据库——DCL管理用户以与授权&忘记root密码的解决方案
Linux基础(day55)
13.4 mysql用户管理 mysql用户管理目录概要 grant all on . to 'user1' identified by 'passwd'; grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd'; grant all on db1.* to 'user3'@'%' identified by 'passwd'; show grants; show grants for use
运维小白
2018/02/06
9600
相关推荐
MySQL 权限操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验