前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础SQL-DCL语句-创建用户-授权用户-撤销授权-查看权限-删除用户-修改用户密码

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

作者头像
Devops海洋的渔夫
发布2022-01-17 14:15:03
1.3K0
发布2022-01-17 14:15:03
举报
文章被收录于专栏:Devops专栏Devops专栏

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

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

1. 创建用户

语法:

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

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

常见的加密方式:

代码语言:javascript
复制
# 加密
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
复制
-- 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
复制
-- 登录用户 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
复制
1. GRANT 授权关键字
        授予用户的权限,如SELECT,INSERT,UPDATE等。如果要授予所的权限则使用ALL
2. 数据库名.表名:
  该用户可以操作哪个数据库的哪些表。如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如`.*`
3. '用户名'@'主机名'
  给哪个用户授权

具体操作:

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

代码语言:javascript
复制
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON test.* TO 'user1'@'localhost';

执行如下:

代码语言:javascript
复制
-- 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
复制
GRANT ALL ON *.* TO 'user2'@'%';

执行如下:

代码语言:javascript
复制
-- 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
复制
REVOKE ALL ON test.* FROM 'user1'@'localhost';

image-20210207234821114

4. 查看权限

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

具体操作:

  • 查看user2用户的权限
代码语言:javascript
复制
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
复制
mysql> DROP USER 'user2'@'%';
Query OK, 0 rows affected (0.00 sec)

image-20210207235509981

6. 修改用户密码

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

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

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

具体操作:

代码语言:javascript
复制
mysqladmin -uroot -p password 新密码
输入老密码

执行如下:

代码语言:javascript
复制
-- 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
复制
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 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 8. 基础SQL-DCL语句-创建用户-授权用户-撤销授权-查看权限-删除用户-修改用户密码
    • 1. 创建用户
      • 2. 授权用户
        • 2.1 首先登录 root 用户,给 user1 用户分配对test这个数据库操作的权限
        • 2.2 登录 root 用户,给user2用户分配对所有数据库操作的权限
      • 3. 撤销授权
        • 撤销user1用户对test操作的权限
      • 4. 查看权限
        • 5. 删除用户
          • 6. 修改用户密码
            • 6.1 使用 mysqladmin 修改 管理员 或者 普通用户 密码
            • 6.2 登录root用户,修改普通用户密码
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档