竟现场打开电脑配置起了mysql数据库权限,令经理目瞪口呆 下

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 竟现场打开电脑配置起了mysql数据库权限,令经理目瞪口呆 下

2、用户权限管理

(1)创建用户及授权

        Mysql用户创建可以通过create user/grant命令创建,也可以通过insert语句直接操作MySQL系统权限表来创建。

创建及给用户授权命令:

        创建用户:CREATE USER username@'host' IDENTIFIED BY 'password'

        用户授权:GRANT permission ON database.tables TO username@’host’

        创建用户并授权:GRANT permission ON database.tables TO username@'hostt'  WITH GRANT OPTION;

    MYSQL创建用户及给用户授权的用户名主机部分由两部分组成,分别为用户名和登录主机名,格式为’username’@’hostname’;hostname字段可以使用主机名或者ip地址,同时hostname字段允许使用”%”和”_”两种字符进行匹配。

1.# 创建用户dayi123并授予本地登录所有库所有权限

2.mysql> create user 'dayi123'@'localhost' identified by 'dayi123';

3.mysql> grant all privileges on *.* to 'dayi123'@'localhost' with grant option;

4.# 创建用户用户dayi通过192.168.0.0段ip地址登录的增删该查跟新库web的权限

5.mysql> grant select,insert,update,delete,create,drop on web.* to 'dayi'@'192.168.%.%' identified by 'dayi123';

6.# 给root用户授权可以通过192.168.0.0段地址登录

7.mysql> grant all on *.* to root@'192.168.%.%' identified by 'dayi123';

(2)用户权限查看

        查看已经授权给用户权限信息命令:show grants for ‘username’@’host’

1.# 查看授权给'dayi'@'192.168.%.%'的权限信息

2.mysql> show grants for 'dayi'@'192.168.%.%';

3.+---------------------------------------+

4.| Grants for dayi@192.168.%.%              |                                          

5.+---------------------------------------------------+

6.| GRANT USAGE ON *.* TO 'dayi'@'192.168.%.%'   |                                        

7.| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `web`.* TO 8.'dayi'@'192.168.%.%' |

9.+---------------------------------------------------+

2 rows in set (0.00 sec)

查看创建用户的语句:show create user ‘username’@’host’

1.# 查看给用户’dayi’没有授权的信息

2.mysql> show create user dayi@'192.168.%.%';

3.+------------------------------------------+

4.| CREATE USER for dayi@192.168.%.%            |                                                                                                                      

5.+--------------------------------------------+

6.| CREATE USER 'dayi'@'192.168.%.%' IDENTIFIED WITH 'mysql_native_password' AS '*8FD40AC91E6D5D89D1060096FDEF8A4ECAA05B5C' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK |

7.+-----------------------------------------------+

8.1 row in set (0.00 sec)

(3)收回用户权限

        收回用户权限是可以通过语句revoke完成,命令格式为:

        Revoke permission on ‘database’,’tables’ from ‘username’@’host’

  1. # 收回用户dayi远程登录的drop权限;
  2. mysql> revoke drop on web.* from dayi@'192.168.%.%';
  3. Query OK, 0 rows affected (0.00 sec)

(4)设置用户密码

Mysql数据库一般在创建用户时就给用户设置了密码,如果在用户创建完成后想修改密码,可通过相应的命令来完成。

        1)修改其他用户密码(当前用户要有权限),一般在root用户下操作

        登录mysql后的修改命令:

                 Alter user ‘username’@’host’ identified by ‘newpassword’

                 Set password for ‘username’@’host’=password(‘newpassword’)

                 Grant user on permission to ‘user’@’host’ identified by ‘newpassword’

        在系统命令行下修改:

                 mysqladmin –u uername –h host password “newpassword”

  1. # 修改dayi123的密码为dayi1234
  2. mysql> alter user 'dayi123'@'localhost' identified by 'dayi1234';
  3. Query OK, 0 rows affected (0.35 sec)
  4. # 修改dayi远程登录密码为dayi1234
  5. mysql> set password for 'dayi'@'192.168.%.%'=password('dayi1234');
  6. Query OK, 0 rows affected, 1 warning (0.00 sec)

        2)修改当前用户密码

            alter user user() identified by ‘newpassword’

            set password=password(‘newpassword’)

  1. # 修改当前登录的root的密码为dayi1234
  2. mysql> alter user user() identified by 'dayi1234';
  3. Query OK, 0 rows affected (0.00 sec)

(5)mysql用户删除

        删除命令:drop user ‘username’@’host’

  1. # 删除用户dayi远程登录
  2. mysql> drop user 'dayi'@'192.168.%.%';
  3. Query OK, 0 rows affected (0.00 sec)
  4. # 查看删除后的用户
  5. mysql> select user,host from mysql.user;
  6. +---------------+-------------+
  7. | user          | host        |
  8. +---------------+-------------+
  9. | root          | 192.168.%.% |
  10. | dayi          | localhost   |
  11. | dayi123       | localhost   |
  12. | mysql.session | localhost   |
  13. | mysql.sys     | localhost   |
  14. | root          | localhost   |
  15. +---------------+-------------+

(6)用户的锁定与解锁

        在创建用户时或用户创建后可以将用户锁定,用户被锁定后,此用户无法完成登录,锁定与解锁的命令如下:

        在创建用户时锁定用户:

        Create user ‘username’@’host’ identified by ‘password’ account lock;

        用户创建受锁定用户L

        Alter user ‘username’@’host’ account lock

        解锁用户:alter user ‘username’@’host’ account unlock;

  1. # 锁定用户dayi123
  2. mysql> alter user 'dayi123'@'localhost' account lock;
  3. Query OK, 0 rows affected (0.00 sec)
  4. # 用户被锁定后等录时报如下错:
  5. ~]# mysql -udayi123 -p
  6. Enter password:
  7. ERROR 3118 (HY000): Access denied for user 'dayi123'@'localhost'. Account is locked.
  8. # 解锁用户dayi123
  9. mysql> alter user 'dayi123'@'localhost' account unlock;
  10. Query OK, 0 rows affected (0.00 sec)

(7)设置密码过期策略

        Mysql数据库用户同系统用户一样,可以设置密码过期策略,密码的过期天数可以在配置文件里面设置,也可以通过命令设置,通过命令为每个用户设置密码的过期天数则会覆盖系统配置文件中的设置。

        1)配置文件中设置

        选项:default_password_lifetime=”过期天数” :如果设置为0,则密码永不过期。

        2)通过命令设置

        命令:alter user ‘username’@’localhost’ password expire interval number day; 设置过期天数

                    alter user ‘username’@’localhost’ password expire never; 设置密码不过期

                    alter user ‘username’@’localhost’ password expire default; 默认过期策略

                    alter user ‘username’@’localhost’ password expire; 手动强制密码过期

  1. #设置用户dayi123的密码180天后过期
  2. mysql> alter user 'dayi123'@'localhost' password expire interval 180 day;
  3. Query OK, 0 rows affected (0.00 sec)
  4. # 设置用户dayi的密码立即过期
  5. mysql> alter user 'dayi'@'localhost' password expire;
  6. Query OK, 0 rows affected (0.00 sec)
  7. # 设置密码过期后执行命令时需要修改密码才能执行命令
  8. ]# mysql -udayi –p
  9. ……
  10. mysql> show databases;
  11. ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

(8)mysql数据库用户资源限制

        通过修改mysql数据库资源限制可以限制用户在某个时间段内连接mysql数据库的时间、执行语句的次数等。

        1)设置参数:

        max_user_connections:全局选项,限制所有用户在同一时间连接mysql数据库实例的数量

        MAX_QUERIES_PER_HOUR:一个用户在一个小时内可以执行查询的次数(基本包含所有语句)

        MAX_UPDATES_PER_HOUR:一个用户在一个小时内可以执行修改的次数(仅包含修改数据库或表的语句)

        MAX_CONNECTIONS_PER_HOUR:一个用户在一个小时内可以连接MySQL的时间

        MAX_USER_CONNECTIONS:一个用户可以在同一时间连接MySQL实例的数量

        2)设置mysql数据库用户资源限制

        设置mysql数据库用户资源限制时可以在创建用户时设置,也可以在用户创建完成后通过命令设置。

1.# 创建用户day,并对用户day的资源进行控制

2.mysql> create user 'day'@'localhost' identified by 'dayi123' with max_queries_per_hour 20 max_updates_per_hour 10 max_connections_per_hour 5 max_user_connections 2;  

3.Query OK, 0 rows affected (0.00 sec)

4.对用户dayi进行资源控制

5.mysql> alter user 'dayi'@'localhost'  with max_queries_per_hour 20 max_updates_per_hour 10 max_connections_per_hour 5 max_user_connections 2;

6.Query OK, 0 rows affected (0.00 sec)

        当需要取消某个选项的,只需将某个选项的值设置为0即可。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
28 1
|
17天前
|
SQL NoSQL 关系型数据库
|
24天前
|
存储 关系型数据库 MySQL
基于案例分析 MySQL 权限认证中的具体优先原则
【10月更文挑战第26天】本文通过具体案例分析了MySQL权限认证中的优先原则,包括全局权限、数据库级别权限和表级别权限的设置与优先级。全局权限优先于数据库级别权限,后者又优先于表级别权限。在权限冲突时,更严格的权限将被优先执行,确保数据库的安全性与资源合理分配。
|
19天前
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
44 0
|
2月前
|
安全 关系型数据库 MySQL
Navicat工具设置MySQL权限的操作指南
通过上述步骤,您可以使用Navicat有效地为MySQL数据库设置和管理用户权限,确保数据库的安全性和高效管理。这个过程简化了数据库权限管理,使其既直观又易于操作。
334 4
|
4月前
|
Oracle 安全 关系型数据库
|
3月前
|
SQL 安全 数据库
"数据库守卫战:揭秘SQL Server中角色与权限的神秘面纱,一键打造坚不可摧的安全堡垒!"
【8月更文挑战第21天】数据库安全性对企业至关重要。SQL Server提供强大机制保障数据安全,包括用户角色管理和权限授权。本文以杂文形式介绍如何创建服务器角色和数据库角色,并通过SQL语句进行权限分配。从创建角色到添加用户、授权和撤销权限,再到最佳实践,帮助读者掌握SQL Server中的角色和权限管理,确保数据安全与完整性。
53 0
|
3月前
|
SQL 数据库
拒绝了对对象 ‘GetTips‘ (数据库 ‘vipsoft‘,架构 ‘dbo‘)的 EXECUTE 权限
拒绝了对对象 ‘GetTips‘ (数据库 ‘vipsoft‘,架构 ‘dbo‘)的 EXECUTE 权限
41 0
|
3月前
|
关系型数据库 MySQL
MySQL 添加用户,分配权限
MySQL 添加用户,分配权限
64 0
|
4月前
|
数据可视化 安全 API
数据库开放权限风险高,API非唯一选择:DataV为您开启安全高效的数据可视化之旅
良好的用户体验:DataV注重用户体验设计,提供了丰富的交互效果和动画效果,使得数据可视化大屏更加生动、吸引人。这有助于提升用户的参与度和满意度,促进数据的广泛应用