MySQL数据库管理之权限管理
《MySQL数据库》MySQL用户赋权
《MySQL数据库》MySQL⽤户赋权⽤户权限管理:1. 创建⽤户和设置密码:create user test@'localhost' IDENTIFIED by 'test';重点解释⼀下@'localhost' 在这个语句中的作⽤(⽩名单的作⽤:就是设置哪些⽹段的⼈可以才有权限)test@'10.0.0.%' 分配10.0.0.XXX/24为⽩名单(24就是255.255.255.0)test@'%' 分配全部地址为⽩名单(只要能ping通)test@'10.0.0.200' 分配唯⼀地址为⽩名单test@'localhost' 分配⾃⼰为⽩名单test@'db02' 分配主机名为⽩名单test@'10.0.0.5%' 分配⽹段⽩名单创建完⽤户需要执⾏:FLUSH PRIVILEGES; 作者不执⾏也可以赋权。
修改密码:alter user test@'10.0.0.%' identified by '456';2. 删除⽤户:drop user test;3. 授权grant select, insert, update, delete on work_db.* to test@'%';4. 查询⽤户权限:show privileges; -- 展⽰mysql权限。
其中 Grant option 权限特殊,是给别⼈授权的权限,语法为原授权语句后加 with Grant option。
show grants for test; -- 查看赋权语句。
select * from mysql.db where user='test' -- 查询赋权的实际情况(数据库级别)select * from er where user='test' -- 查询赋权的实际情况(全局 *.*)select * from mysql.tables_priv where user='test' -- 查询赋权的实际情况(表级别)select * from mysql.columns_priv where user='test' -- 查询赋权的实际情况(列级别)5. mysql赋权级别5.1.全局层级全局权限适⽤于⼀个给定服务器中的所有数据库。
MySQL中的权限继承和用户管理技巧
MySQL中的权限继承和用户管理技巧MySQL是一个非常流行的关系型数据库管理系统,被广泛用于各种应用程序的数据存储和管理。
在使用MySQL时,用户权限的管理是非常重要的一个方面,它决定了用户对数据库和数据的访问权限。
本文将深入探讨MySQL中的权限继承和用户管理技巧,帮助读者更好地理解和运用这些功能。
一、MySQL用户及权限概述在MySQL中,用户和权限是密切相关的。
用户是数据库管理员对数据库和数据进行管理和操作的主体,而权限是决定用户能够执行哪些操作的规则集合。
MySQL中的用户可以分为两类:系统用户和应用程序用户。
系统用户是MySQL服务器的内部用户,用于系统管理和监控。
而应用程序用户则是由数据库管理员创建的,用于应用程序对数据库的操作。
权限是MySQL中非常重要的一个概念。
它控制着用户对数据库和数据的访问级别,包括读取、写入、修改、删除等操作权限。
MySQL中的权限分为全局级别、数据库级别和表级别三个层次。
全局级别权限是指在整个MySQL服务器上的权限,它影响到所有的数据库和表。
数据库级别权限是指在某个特定数据库上的权限,它仅影响该数据库下的表。
表级别权限则是指在某个特定表上的权限,它最为具体,也最为细粒度。
MySQL的权限控制功能非常灵活,管理员可以根据需要对不同的用户赋予不同的权限。
二、MySQL中的权限继承MySQL中的权限继承是指权限在不同层级之间的传递和继承。
在MySQL中,权限可以从全局级别传递到数据库级别,再从数据库级别传递到表级别。
这种权限继承的机制可以让管理员更加方便地管理用户权限,减少工作的重复性。
当一个用户被赋予了全局级别的权限时,这个用户可以在整个MySQL服务器上执行相应的操作。
但是,管理员可以选择将这个权限限制在某个特定的数据库上。
这样,当用户连接到这个数据库时,他将具有相应的权限。
但是在其他数据库上,他将没有这些权限。
同样地,管理员也可以将权限限制在某个特定的表上。
MySQL数据库的权限管理与用户授权方法
MySQL数据库的权限管理与用户授权方法在现代信息化的时代,数据库成为了各个行业重要的数据管理工具。
而MySQL作为一款开源的关系型数据库管理系统,因其性能卓越和易用性而成为了广泛使用的选择。
然而,对于MySQL数据库而言,权限管理是必不可少的一部分。
本文将重点探讨MySQL数据库的权限管理与用户授权方法。
一、权限管理的重要性数据库中存储着各种类型的数据,其中包含了企业重要的商业机密、个人隐私等敏感信息。
如果没有良好的权限管理机制,可能会导致数据泄露、篡改等安全问题。
因此,MySQL数据库的权限管理是确保数据安全的重要环节。
二、MySQL用户权限分类MySQL用户权限可以分为全局级别权限、数据库级别权限和表级别权限三个层次。
1. 全局级别权限全局级别权限指的是对整个数据库服务器的操作权限。
拥有全局级别权限的用户可以对数据库服务器上的所有数据库、数据表进行操作。
一般情况下,只有系统管理员才具备全局级别权限。
2. 数据库级别权限数据库级别权限指的是对某个特定数据库的操作权限。
拥有数据库级别权限的用户可以对该数据库下的所有数据表进行操作。
数据库级别权限可以通过GRANT语句来分配。
3. 表级别权限表级别权限指的是对数据库中的某个特定表的操作权限。
拥有表级别权限的用户可以对该表进行查询、插入、更新和删除等操作。
表级别权限也可以通过GRANT语句来分配。
三、MySQL用户授权方法MySQL提供了GRANT和REVOKE两条SQL语句来实现用户的授权和撤销授权。
1. GRANT语句GRANT语句用于授权,其基本语法如下:```GRANT privileges ON database.table TO user@host;```其中,privileges为授权的权限,可以是全局级别权限、数据库级别权限或表级别权限;database.table为授权的对象,可以是某个具体数据库或数据表;user@host为被授权的用户和主机。
数据库用户管理和权限管理
数据库用户管理和权限管理1. 引言在数据库系统中,用户管理和权限管理是非常重要的功能。
通过用户管理,可以创建、修改和删除数据库用户,并为其分配相应的权限;通过权限管理,可以控制用户对数据库中数据和对象的访问和操作。
本文将介绍数据库用户管理和权限管理的基本概念、操作方法以及相关注意事项。
2. 数据库用户管理2.1 用户概念在数据库系统中,一个用户代表一个具有一定身份和权限的操作者。
每个用户都有自己的用户名和密码用于登录数据库系统。
2.2 用户创建创建新用户是管理员对数据库进行用户管理的第一步。
在大多数数据库系统中,可以使用以下语句来创建新用户:CREATE USER username IDENTIFIED BY password;其中,username为要创建的用户名,password为该用户名对应的密码。
2.3 用户修改在某些情况下,需要修改已存在的用户信息。
例如,当需要更改用户名或密码时,可以使用以下语句来修改现有用户:ALTER USER username IDENTIFIED BY new_password;2.4 用户删除当某个用户不再需要访问数据库时,可以使用以下语句将其从数据库中删除:DROP USER username;需要注意的是,在执行删除操作之前,请确保该用户已经没有任何重要数据或对象依赖于它。
3. 数据库权限管理3.1 权限概念数据库权限是指用户对数据库中数据和对象的访问和操作权力。
在数据库系统中,常见的权限包括SELECT、INSERT、UPDATE、DELETE等。
3.2 权限分配在数据库系统中,可以使用以下语句为用户分配权限:GRANT privilege ON object TO user;其中,privilege为要授予的权限,object为要授权的对象(如表、视图等),user为要授权给的用户。
3.3 权限撤销当某个用户不再需要某个权限时,可以使用以下语句将该权限从用户身上撤销:REVOKE privilege ON object FROM user;3.4 角色管理角色是一种特殊类型的用户,它可以扮演多个用户之间共享的角色,并且具有一组预定义的权限。
数据库权限管理控制数据访问权限
数据库权限管理控制数据访问权限数据库是企业中存储和管理数据的关键工具。
为了保护敏感数据并确保数据的安全性和完整性,数据库权限管理是至关重要的。
通过合理设置和控制数据访问权限,可以防止非授权人员获取敏感信息,同时提供灵活性和便捷性给有权限的用户。
一、引言数据库权限管理是指通过设置和控制用户对数据库对象(如表、视图、存储过程等)的访问权限,以及对数据操作的权限(如读、写、更新等)。
合理的权限管理能够确保数据只被有权限的用户访问,从而提升数据的安全性和保护隐私。
二、数据库权限管理的重要性1. 数据保密性:权限管理可针对敏感数据进行限制,只允许有相应权限的用户访问,防止泄露和滥用。
2. 数据完整性:权限管理可限制用户对数据的修改,确保数据的完整性和可靠性。
3. 数据可靠性:合理的权限设置可以防止误操作或非法操作,提高数据库的稳定性和可靠性。
4. 合规要求:许多行业都有相关的合规要求,要求数据库提供严格的权限管理,以满足法律和监管部门的要求。
三、数据库权限管理的方法和策略1. 用户认证和授权:数据库管理系统允许管理员创建和管理用户账号,并为每个用户分配不同的权限。
管理员应该为每个用户设置强密码,定期更新密码,并及时删除离职员工的账号。
2. 角色权限管理:通过创建角色并为其分配权限,可以简化权限管理过程。
将用户分配到相应的角色,权限的调整只需要在角色层面进行,而不需要对每个用户进行单独设置。
3. 细粒度权限控制:除了限制对整个对象的访问权限,数据库还提供了细粒度的权限控制功能,如列级权限和行级权限。
通过限制用户对数据的具体字段或行的访问,可以更精细地管理权限。
4. 审计和监控:数据库应该记录用户的访问操作,包括登录、查询、修改等,并定期进行审计和监控,及时发现和防止非法操作或异常行为。
5. 数据备份和恢复:权限管理也要考虑数据备份和恢复操作的权限,相关操作应该仅限于授权的人员,以防止数据的损坏或丢失。
四、数据库权限管理的最佳实践1. 需求分析:在权限管理前,需要对企业的业务需求进行充分的分析和理解,明确每个用户或角色所需的权限和访问级别。
MySQL中的角色和权限管理
MySQL中的角色和权限管理导语:MySQL是一款非常流行的关系型数据库管理系统,它提供了丰富的角色和权限管理功能,帮助管理员灵活地管理数据库的访问和操作权限。
本文将深入探讨MySQL中的角色和权限管理,介绍其使用方法和注意事项。
一、角色和权限的基本概念1. 角色: 在MySQL中,角色是用来管理和分配权限的抽象概念。
通过创建角色,可以将一组权限集中到一个角色中,便于权限的管理和控制。
2. 权限: 权限是指数据库用户对数据库对象(如表、视图、存储过程等)进行操作的许可。
MySQL中的权限通常包括SELECT、INSERT、UPDATE、DELETE 等。
二、角色和权限的创建和分配1. 创建角色: 在MySQL中,可以通过CREATE ROLE语句创建一个角色。
```CREATE ROLE 'role_name' IDENTIFIED BY 'password';```其中,role_name是角色的名称,password是角色的密码(可选)。
2. 分配权限: 创建角色后,可以使用GRANT语句将权限分配给角色。
```GRANT permission_1, permission_2, ... TO 'role_name';```例如,将SELECT和INSERT权限分配给角色test_role:```GRANT SELECT, INSERT ON database_name.* TO 'test_role';```三、用户和角色的关联1. 创建用户: 在MySQL中,用户是用来登录和访问数据库的实体。
可以使用CREATE USER语句创建一个用户。
```CREATE USER 'username' IDENTIFIED BY 'password';```其中,username是用户的名称,password是用户的密码。
MySQL 数据库基础与应用 第10章 权限管理和安全控制
MySQL 数据库基础与应用
5
10.2 用户管理
10.2.1 创建用户
创建用户使用CREATE USER语句。 语法格式:
CREATE USER user_specification [ , user_specification ] ...
其中,user_specification:
user [
IDENTIFIED BY [ PASSWORD ] ‘password’ | IDENTIFIED WITH auth_plugin [ AS ‘auth_string’] ]
10.2 用户管理
一个新安装的MySQL系统,只有一个名为root的用户,可使用以下 语句进行查看:
mysql> SELECT host, user, authentication_string FROM er;
+-----------+--------+------------------------------------------------------------------------+
4. procs_priv表 procs_priv表可以存储过程和存储函数进行权限设置。procs_priv表 包含8个字段,分别是Host、Db、User、Routine_name、Routine_type、 Grantor 、Proc_priv和Timestamp。
MySQL 数据库基础与应用
4
+-----------+--------+------------------------------------------------------------------------+
MySQL的权限管理与安全审计策略
MySQL的权限管理与安全审计策略概述:MySQL是一个强大的开源数据库管理系统,广泛应用于各种大小规模的应用程序。
然而,随着互联网的普及和数据泄露事件的不断增加,数据库的安全性和数据隐私保护成为了一个非常重要的问题。
本文将重点探讨MySQL的权限管理和安全审计策略,帮助读者更好地保护其数据库的安全性。
权限管理:MySQL的权限管理是建立在用户和角色的基础上的。
数据库管理员(DBA)可以通过创建用户和角色,分配不同的权限来控制用户对数据库的操作。
通过使用GRANT语句,DBA可以将特定的权限授予某个用户或者角色,而使用REVOKE 语句可以撤销已经授予的权限。
这种灵活的权限管理机制使得DBA可以根据实际需求,细粒度地控制用户对数据库的访问权限,从而有效地保护数据库安全。
权限控制的最佳实践:为了确保数据库的安全性,以下是一些权限控制的最佳实践建议:1.最小化权限授予:DBA应该根据用户所需的操作来授予最小化的权限。
不要滥用权限,避免将不必要的执行权限授予用户。
2.使用角色来管理权限:角色可以将一组权限组合在一起,并赋予多个用户,使得权限管理更加灵活和高效。
当权限需要进行更改时,只需更改角色即可,而不需要逐个更改用户的权限。
3.限制外部访问:数据库服务器应该放置在安全的网络环境中,仅允许受信任的主机进行访问。
通过防火墙和访问控制列表(ACL),可以限制数据库服务器的访问。
4.定期审查权限:定期审查用户的访问权限是非常重要的。
DBA应该审查当前用户的权限,并删除不再需要的权限。
这可以确保数据库的安全性。
安全审计策略:安全审计是MySQL中一个重要的组成部分,可以有效地监控和追踪数据库的访问和操作记录。
审计日志是一种记录用户对数据库执行的操作和事件的记录,可以用于追踪和分析潜在的安全问题。
以下是一些MySQL安全审计的策略建议:1.开启审计日志记录:在MySQL配置文件中,可以设置审计日志的开启和关闭。
数据库安全与权限管理
数据库安全与权限管理数据库安全是指保护数据库免受非法、不正当或未授权的访问、使用、披露、破坏、修改和删除的一系列措施。
数据库拥有者或管理员应采取必要的安全措施来防范各种攻击,保护其中的数据资产。
而权限管理是数据库安全的一部分,它确定了用户在数据库中进行操作的权限范围,以限制非法和未授权访问。
一个数据库的权限管理应该包括以下几个方面:访问控制、身份验证、授权和审计。
在实践中,针对每个方面都有一些常见的最佳实践和建议。
首先,访问控制是确保只有授权用户可以访问数据库的一种手段。
为了实现访问控制,我们可以使用措施如下:1. 强化密码策略:用户数据库帐号的安全性取决于他们设定的密码。
强制要求密码具有一定的复杂性,比如必须包含字母、数字和特殊字符,并定期更改密码,可以有效降低密码被破解的风险。
2. 使用多因素身份验证:通过在登录过程中使用多个身份验证要素,例如密码和令牌、生物识别信息等,来增强身份验证的安全性,有效防止恶意攻击者获得未经授权的访问权限。
3. 细分权限:将数据库用户划分为几个角色,并为每个角色指定特定的数据库权限。
这将确保用户只能访问他们需要的数据和功能,减少意外或故意数据泄漏和损坏的潜在风险。
其次,身份验证是数据库安全的核心。
它是确保用户身份的有效性,并验证其可访问的数据库的一种方式。
1. 使用强密码:作为用户注册和登录的一种手段,要求用户选择强密码可以增加数据库的安全性。
建议密码长度不少于8位,包含大小写字母、数字和特殊字符,并定期更换密码。
2. 设置账号锁定策略:在用户密码连续错误多次时,自动锁定账号一段时间,可以有效防止暴力破解的攻击。
3. IP地址过滤:只允许来自特定IP地址的请求通过身份验证,这有助于避免未授权的访问。
授权是数据库管理的重要组成部分之一。
它确定了用户对数据库的操作权限,以及允许用户执行哪些操作和如何操作数据库。
下面是一些授权的最佳实践:1. 最小权限原则:为用户分配最低限度的操作权限,只给予他们执行必要任务所需的权限。
数据库 权限管理
数据库权限管理
数据库权限管理是指对数据库中的数据和操作进行合理、安全的
控制和管理。
通过权限管理,可以确保数据库的安全性,防止未经授
权的用户对数据库进行非法操作,保护数据的完整性和隐私性。
首先,数据库权限管理需要建立合理的权限体系。
数据库管理员
应根据不同用户和用户组的需求以及数据操作的重要性和敏感性,制
定不同的权限策略。
一般来说,权限分为读取权限、修改权限、删除
权限等,管理员需要根据具体情况对这些权限进行分配和管理。
其次,在权限管理过程中,要注意进行适当的授权和限制。
适当
的授权是指根据用户的职责和需求,给予其相应的权限,以便用户能
够顺利完成工作。
限制则是指对部分用户或操作进行限制,避免滥用
权限或意外操作导致的数据丢失或泄露。
权限管理还需要注重对数据库的监控和审计。
通过对数据库的监控,可以及时发现异常操作和潜在的安全风险,提高对数据库的安全性。
审计则是对数据库操作的记录和审查,可以追溯操作人员和时间,以便发现和解决问题。
此外,数据库权限管理还需要定期进行权限的审查和更新。
随着
组织内部人员变动和业务需求的变化,权限的管理也需要及时调整。
定期审查权限,删除不必要的权限,更新权限策略,可以提高权限管
理的有效性和精确性。
总之,数据库权限管理是确保数据库安全和数据完整性的重要举措。
通过建立合理的权限体系,进行适当的授权和限制,加强监控和审计,并定期进行复审和更新,可以提高数据库的安全性和可靠性,在合规性和安全性方面起到积极的作用。
6.权限管理
修改root的密码
在C:\Program Files\MySQL\MySQL Server 5.0\bin目录下面 mysqladmin -uroot -p123 password cjc 用户名: root 原来密码: 123 新密码: cjc
第一种方法(直接操作授权表)
创建用户(使用mysql数据库) insert into user(host,user,password) values('%','test',password('test')); flush privileges;//刷新数据库 修改密码 update user set password=password('123'); flush privileges; 删除用户(使用root用户) use mysql; delete from user where user='test';
权限系统
MySQL权限系统的主要功能是证实连接到一台 给定主机的用户,并赋予该用户在数据库上的 select、insert、update、delete等权限。 MySQL权限表:数据库mysql中三个表很重要 user,db,host
用户登录
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysql -u root -p123第二种方法(使用gra Nhomakorabeat语句)
设置用户管理权限 grant 权限列表 [(字段列表)] on 数据库名. 表名 to 用户名@域名或ip地址 [identified by '密码'] [with grant option]
数据库权限管理与审计的使用方法
数据库权限管理与审计的使用方法随着数据的快速增长和数据库的广泛应用,数据库的安全性和可靠性越来越受到重视。
数据库权限管理和审计是保障数据库安全的重要手段之一。
在本文中,我们将介绍数据库权限管理和审计的使用方法,以帮助管理员有效地保护数据库的安全。
一、数据库权限管理的基本概念数据库权限管理是指对数据库用户的访问权限进行控制和管理的过程。
通过合理的权限管理,可以保护数据库中的重要数据免受未经授权的访问、修改或删除。
权限管理通常包括角色、用户和权限的三个核心概念。
1. 角色(Role): 角色是一组权限的集合。
可以将相同权限需求的用户归类到同一个角色中,从而实现权限的统一管理。
2. 用户(User): 用户是数据库中的实体,具有独立的身份和密码,可以被授予特定的角色或权限。
3. 权限(Privilege): 权限定义了用户或角色在数据库操作中具备的能力,例如SELECT(查询)、INSERT(添加)、DELETE(删除)和UPDATE(更新)等。
二、数据库权限管理的设置步骤正确设置数据库权限是确保数据库安全的关键,下面将介绍一般的数据库权限管理设置步骤。
1. 创建角色:根据用户的不同需求,创建不同的角色,例如管理员、普通用户等。
可以通过GRANT语句来授予角色相应的权限。
2. 创建用户:根据具体的用户身份,创建相应的用户,并为其指定角色。
3. 授权角色:通过GRANT语句,将特定角色授予用户,赋予用户相应的权限。
4. 取消授权:通过REVOKE语句,可以取消对用户的特定权限授予。
5. 角色的继承:父角色可以赋予子角色权限,从而实现角色的继承。
三、数据库审计的基本概念数据库审计是指对数据库的操作进行监控、记录和分析的过程。
通过数据库审计,管理员可以掌握数据库的访问情况,追踪敏感数据的访问,及时发现和应对潜在的安全风险。
数据库审计的核心是审计日志,其中记录了数据库的操作细节,包括用户登录、查询记录、数据修改等。
数据库安全权限管理规范
数据库安全权限管理规范一、引言数据库作为企业重要的信息资产之一,安全权限管理是保障其安全性和完整性的关键环节。
本文将详细介绍数据库安全权限管理规范,以确保数据库的合规性和可靠性。
二、背景随着企业信息化程度的提高,数据库存储了大量敏感信息,包括客户数据、财务数据等。
如果未进行合理的权限管理,数据库面临潜在的风险和威胁,如数据泄露、篡改等。
因此,数据库安全权限管理变得尤为重要。
三、1. 系统管理员权限管理a) 系统管理员应有唯一的账号,并配置强密码和定期更换密码。
b) 禁止将系统管理员账号授权给其他人员,并及时清除无效账号。
c) 限制系统管理员的物理访问权限,只有必要时才能进入服务器房间。
d) 定期审计系统管理员的操作记录,以发现潜在的安全风险。
2. 数据库管理员权限管理a) 数据库管理员账号应使用强密码,并定期更换密码。
b) 禁止将数据库管理员账号授权给非管理员人员。
c) 限制数据库管理员的操作权限,只授予其需要的最小权限。
d) 定期审计数据库管理员的操作记录,及时发现操作异常情况。
3. 用户权限管理a) 按照用户职责和需求,进行权限分级,并及时调整权限。
b) 禁止使用通用账号,用户应拥有唯一账号,并使用强密码。
c) 限制用户的物理访问权限,仅授权必要的人员可以进入服务器房间。
d) 禁止用户通过网络连接数据库,只能通过内部网络访问。
4. 数据备份和恢复a) 定期进行数据库备份,并将备份数据存储在安全的地方。
b) 验证备份数据的完整性和可用性,并定期进行恢复测试。
c) 制定灾难恢复计划,确保在系统宕机或数据丢失时能够迅速恢复。
5. 审计和监控a) 配置数据库审计功能,记录用户访问和操作的详细信息。
b) 监控数据库性能和异常事件,并及时采取相应措施。
c) 定期进行安全审计,评估数据库的整体安全性和合规性。
6. 安全策略和培训a) 制定数据库安全策略,规范人员行为和操作流程。
b) 提供定期的培训和教育,加强员工的安全意识和知识。
数据库权限管理
数据库权限管理⽬录数据库权限管理MySQL 是⼀个多⽤户数据库,具有功能强⼤的访问控制系统,可以为不同⽤户指定不同权限。
我们使⽤的是 root ⽤户,该⽤户是超级管理员,拥有所有权限,包括创建⽤户、删除⽤户和修改⽤户密码等管理权限。
为了实际项⽬的需要,可以创建拥有不同权限的普通⽤户。
1、Mysql 权限表MySQL 在安装时会⾃动创建⼀个名为 mysql 的数据库,mysql 数据库中存储的都是⽤户权限表。
⽤户登录以后,MySQL 会根据这些权限表的内容为每个⽤户赋予相应的权限。
user 表是 MySQL 中最重要的⼀个权限表,⽤来记录允许连接到服务器的账号信息。
需要注意的是,在 user 表⾥启⽤的所有权限都是全局级的,适⽤于所有数据库。
user 表中的字段⼤致可以分为 4 类,分别是⽤户列、权限列、安全列和资源控制列,下⾯主要介绍这些字段的含义。
1.1、⽤户列⽤户列存储了⽤户连接 MySQL 数据库时需要输⼊的信息。
需要注意的是 MySQL 5.7 版本不再使⽤ Password 来作为密码的字段,⽽改成了 authentication_string。
⽤户登录时,如果这 3 个字段同时匹配,MySQL 数据库系统才会允许其登录。
创建新⽤户时,也是设置这 3 个字段的值。
修改⽤户密码时,实际就是修改 user 表的 authentication_string 字段的值。
因此,这 3 个字段决定了⽤户能否登录。
1.2、权限列权限列的字段决定了⽤户的权限,⽤来描述在全局范围内允许对数据和数据库进⾏的操作。
权限⼤致分为两⼤类,分别是⾼级管理权限和普通权限:⾼级管理权限主要对数据库进⾏管理,例如关闭服务的权限、超级权限和加载⽤户等;普通权限主要操作数据库,例如查询权限、修改权限等。
user 表的权限列包括 Select_priv、Insert_ priv 等以 priv 结尾的字段,这些字段值的数据类型为 ENUM,可取的值只有 Y 和 N:Y 表⽰该⽤户有对应的权限,N 表⽰该⽤户没有对应的权限。
mysql赋予全部函数执行权限的方法
mysql赋予全部函数执行权限的方法MySQL是一种常用的关系型数据库管理系统,它具有丰富的功能和灵活的配置选项。
在使用MySQL时,我们经常需要为用户授予执行各种操作的权限,包括函数的执行权限。
本文将介绍如何使用MySQL为用户赋予全部函数执行权限的方法。
在MySQL中,我们可以通过GRANT语句为用户授予各种权限。
要赋予用户全部函数执行权限,我们可以使用以下步骤进行操作:步骤1:登录MySQL我们需要使用MySQL客户端登录到MySQL数据库。
可以使用以下命令登录MySQL:```mysql -u 用户名 -p```其中,用户名是你要登录的MySQL用户的用户名。
执行该命令后,系统会提示你输入密码。
输入正确的密码后,即可登录到MySQL。
步骤2:创建用户如果还没有要授予权限的用户,我们需要先创建一个用户。
可以使用以下命令创建用户:CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';```其中,用户名是你要创建的用户的用户名,密码是该用户的密码。
你也可以将localhost替换为具体的IP地址或主机名,以允许该用户从指定的IP地址或主机名访问MySQL。
步骤3:赋予权限一旦用户创建成功,我们就可以为其赋予权限。
要赋予用户全部函数执行权限,可以使用以下命令:```GRANT EXECUTE ON *.* TO '用户名'@'localhost';```这条命令中,EXECUTE关键字表示赋予用户执行权限,*.*表示对所有数据库和表赋予权限,用户名和localhost需要替换为你要授予权限的用户和相应的主机名或IP地址。
步骤4:刷新权限完成权限赋予后,我们需要刷新MySQL的权限缓存,以使新的权限生效。
可以使用以下命令刷新权限:FLUSH PRIVILEGES;```刷新权限后,用户将立即获得全部函数执行权限。
数据库权限管理
数据库权限管理随着数据的增长和应用系统的复杂化,数据库成为了企业重要的信息资产之一。
为了保证数据的安全性和完整性,数据库权限管理显得尤为重要。
本文将从数据库权限的概念、数据库权限管理的重要性、常见的权限管理策略以及权限管理的实施步骤等方面进行探讨。
一、数据库权限的概念数据库权限是指对于数据库中的对象(如表、视图、存储过程等)进行操作的权力。
不同的用户拥有不同的权限,权限可以控制用户对于数据库对象的操作,包括读取、修改、删除等。
数据库权限的授予是通过角色或用户进行管理的。
二、数据库权限管理的重要性1. 数据安全性:数据库权限管理可以控制用户对于数据的访问权限,避免未授权用户获取敏感数据,保障数据的安全性。
2. 数据完整性:通过权限管理,可以限制用户对于数据库对象的修改权限,避免误操作导致数据的破坏或损失。
3. 合规性要求:一些行业或政府机构对于数据的访问权限有严格的合规性要求,数据库权限管理可以帮助企业满足相关的合规性要求。
三、常见的权限管理策略1. 最小权限原则:根据用户的职责和任务需求,将其权限设置为最小化,即只授予用户完成工作所必需的权限,避免授予过多的权限导致安全风险。
2. 分级管理:根据用户的不同角色和职责,将用户分为不同的权限组,每个组拥有不同的权限,实现权限的细粒度管理。
3. 定期审计:定期对数据库权限进行审计,检查权限的合理性和合规性,并对权限进行调整和优化。
四、权限管理的实施步骤1. 需求分析:明确数据库权限管理的目标和需求,包括用户角色、权限分配原则等。
2. 权限设计:设计合理的权限模型,建立角色和权限的映射关系。
3. 权限分配:根据权限设计,对用户进行权限分配,确保用户获得其工作所需的权限。
4. 定期审计:定期对数据库权限进行审计,发现并处理异常权限。
5. 权限维护:根据组织结构的变化、用户职责的变化等,及时调整和维护数据库权限。
总结:数据库权限管理是保障数据安全和完整性的重要手段,通过合理的权限管理策略和实施步骤,可以有效控制用户对于数据库的访问权限,避免未授权的数据访问和误操作。
mysql数据库提权原理
mysql数据库提权原理
MySQL数据库提权原理涉及到数据库安全性和权限管理的重要
概念。
在MySQL中,提权指的是用户获取更高级别权限的过程。
MySQL数据库提权的原理主要涉及以下几个方面:
1. 用户权限管理,MySQL通过授予用户不同的权限来管理数据
库访问和操作。
权限包括SELECT、INSERT、UPDATE、DELETE等,以
及创建数据库、创建表、修改表结构等。
当用户需要执行某些操作时,需要相应的权限。
提权的原理就是通过修改用户的权限来获取
更高级别的权限。
2. 角色管理,MySQL中可以创建角色,并将权限赋予角色,然
后将用户与角色关联。
提权的原理之一就是通过将用户添加到拥有
更高权限的角色中来实现提权。
3. 漏洞利用,提权还可以通过发现数据库软件本身或者操作系
统的漏洞来实现。
攻击者可以利用这些漏洞来获取更高级别的权限,这是数据库安全性的一个重要问题。
4. 特权用户,MySQL中有一些特权用户,比如root用户,拥
有最高级别的权限。
提权的原理之一就是通过获取这些特权用户的访问权限来实现提权。
总的来说,MySQL数据库提权的原理涉及到用户权限管理、角色管理、漏洞利用以及特权用户的权限获取。
在实际应用中,需要严格管理用户权限,及时修补漏洞,保护数据库安全。
数据库管理系统中的用户角色与权限控制
数据库管理系统中的用户角色与权限控制数据库管理系统作为组织和管理数据的重要工具,需要确保对数据的安全性和完整性进行有效控制。
为了实现这一目标,数据库管理系统引入了用户角色与权限控制的概念。
用户角色和权限控制可以帮助管理者对数据库中的各种对象进行管理和访问控制,从而实现对数据的合法使用和保护。
用户角色是指在数据库管理系统中定义的一组权限集合,它可以根据不同的功能需求来定义,例如:管理者、用户、数据分析师等。
不同的用户角色拥有不同的权限,这些权限决定了用户能够进行的操作范围。
通过为每个用户分配相应的用户角色,数据库管理员可以实现对用户权限的集中管理,提高系统的安全性和管理效率。
在数据库管理系统中,权限是指用户在系统中执行各种操作的能力。
这些操作可以包括对数据库表进行查询、插入、更新和删除,对视图进行创建和修改,对用户角色进行设置和管理等。
权限系统可以根据实际需求进行灵活配置,确保用户只能对其负责的数据进行访问和修改,从而防止非法操作和数据泄漏。
为了实现用户角色与权限的控制,数据库管理系统通常提供一系列的管理功能。
其中包括用户管理、角色管理和权限管理等。
用户管理用于创建、修改和删除用户的账户,通过这些账户来记录用户的身份和访问权限。
角色管理用于定义不同的角色类型,并将相应的权限分配给不同的角色。
权限管理用于为不同的角色和用户分配相应的权限,并对其进行修改和撤销。
通过这些管理功能,数据库管理员可以根据组织的需求,对用户角色和权限进行灵活的配置和管理。
在实际应用中,数据库管理系统中的用户角色与权限控制具有重要的意义。
首先,可以确保数据的安全性和完整性。
合理的用户角色与权限控制能够限制用户的访问权限,防止未经授权的操作对数据库造成破坏。
其次,可以提高系统的管理效率。
通过定义不同的用户角色和权限,可以将系统的管理权限进行分配和限制,使得系统管理员能够更好地管理和维护数据库。
此外,用户角色与权限控制还可以帮助组织满足合规要求,遵循隐私法规和数据保护政策。
数据库账户管理与权限控制的使用方法
数据库账户管理与权限控制的使用方法在一个企业或组织中,拥有一个高效的数据库管理系统是至关重要的,而数据库账户管理与权限控制是确保数据的安全性和访问控制的重要方面。
本文将介绍数据库账户管理和权限控制的使用方法,帮助管理员确保数据库的安全和有效使用。
1. 数据库账户管理数据库账户管理涉及用户的创建、修改和删除,以及账户的有效管理。
以下是数据库账户管理的一些关键方面:1.1 用户创建管理员可以通过数据库管理系统的用户管理功能创建用户账户。
在创建用户时需要指定用户名和密码,并为其分配角色或权限。
用户名应该具备唯一性,以避免任何冲突或混淆。
密码应选择复杂、难以猜测,以确保账户的安全性。
1.2 用户权限分配数据库管理系统提供了细致的权限管理机制,允许管理员对不同的用户账户分配特定的权限。
权限可以是读取、写入或管理数据库的操作。
管理员可以根据用户的职责和需要分配适当的权限,以确保只有合适的用户能够访问和操作数据库。
1.3 用户权限审查随着时间的推移,权限需求可能会发生变化。
管理员应定期审查用户的权限,并根据实际需求进行调整。
如果有员工离职或变更职位,他们的账户权限应被及时更新或取消,以防止未授权访问数据库。
1.4 账户禁用和删除对于不再需要访问数据库或被离职的用户,管理员应及时禁用或删除他们的账户。
禁用账户将暂时停止用户的访问权限,而删除则彻底从数据库中删除该用户账户。
通过及时禁用和删除账户,管理员能够有效地控制数据库的权限。
2. 权限控制权限控制是确保数据库中的敏感数据只能被合法用户访问的重要机制。
以下是一些常见的权限控制方法:2.1 角色管理数据库管理系统通常支持角色管理,允许管理员将权限分组为角色并为用户分配角色。
角色可以简化权限管理,减少管理员的工作量。
当权限需求发生变化时,只需要更改角色的权限,而不需要逐个修改用户的权限。
2.2 访问控制列表(ACL)访问控制列表是一种权限分配的机制,允许管理员控制特定用户或用户组对数据库对象的访问权限。
Dockeryum安装Mysql8、用户管理、权限管理、配置详解、常见问题解决
Dockeryum安装Mysql8、⽤户管理、权限管理、配置详解、常见问题解决⼀、docker安装1、查看可⽤的 MySQL 版本2、拉取 MySQL 镜像这⾥我们拉取官⽅的最新版本的镜像:$ docker pull mysql:8.0.263、查看本地镜像使⽤以下命令来查看是否已安装了 mysql:$ docker images4、创建挂载⽬录mkdir -p /usr/local/mysql/confmkdir -p /usr/local/mysql/datamkdir -p /usr/local/mysql/logs5、创建fvim /usr/local/mysql/conf/f把下⾯配置复制到⽂件中:# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; version 2 of the License.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA## The MySQL Server configuration file.## For explanations see# /doc/mysql/en/server-system-variables.html[client]default-character-set = utf8mb4[mysqld]pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockdatadir = /var/lib/mysqlsecure-file-priv= NULL# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0# Custom config should go here# 字符集character_set_server=utf8collation-server=utf8_general_ci# 是否对sql语句⼤⼩写敏感,1表⽰不敏感lower_case_table_names = 1# 最⼤连接数max_connections = 1000# Innodb缓存池⼤⼩innodb_buffer_pool_size = 4G# 表⽂件描述符的缓存⼤⼩table_open_cache_instances=1table_open_cache=2000table_definition_cache=2000!includedir /etc/mysql/conf.d/6、创建启动容器docker run --restart=always --name mysql8.0 --privileged=true \-d -p 3306:3306 \-v /usr/local/mysql/conf/f:/etc/mysql/f \-v /usr/local/mysql/logs:/logs \-v /usr/local/mysql/data/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.26参数解释:--restart=always -> 开机启动容器,容器异常⾃动重启--name -> 指定容器名称-d -> 以守护进程的⽅式启动容器-p -> 映射宿主机端⼝-v -> 映射配置⽂件、⽇志、数据-e -> 写⼊配置root密码7、查看是否启动正常$ docker ps使⽤Navicat连接:⼆、yum 安装1、(如果服务器接通外⽹)直接⽤wget下载mysql源rpm安装包cd ~wget https:////mysql80-community-release-el7-3.noarch.rpm如果没有安装wget,则安装: yum -y install wget2、(如果服务器没有接通外⽹)下载mysql源rpm安装包上传到服务器3、安装rmp包yum install mysql80-community-release-el7-3.noarch.rpm4、查看是否安装成功[root@localhost ~]# yum repolist enabled | grep "mysql.*"!mysql-connectors-community/x86_64 MySQL Connectors Community 212!mysql-tools-community/x86_64 MySQL Tools Community 132!mysql80-community/x86_64 MySQL 8.0 Community Server 2835、安装mysqlyum -y install mysql-community-server6、(可选)修改配置:vim /etc/f把下⾯配置复制到⽂件中:# For advice on how to change settings please see# /doc/refman/8.0/en/server-configuration-defaults.html[mysqld]## Remove leading # and set to the amount of RAM for the most important data# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.# innodb_buffer_pool_size = 128M## Remove the leading "# " to disable binary logging# Binary logging captures changes between backups and is enabled by# default. It's default setting is log_bin=binlog# disable_log_bin## Remove leading # to set options mainly useful for reporting servers.# The server defaults are faster for transactions and fast SELECTs.# Adjust sizes as needed, experiment to find the optimal values.# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M## Remove leading # to revert to previous value for default_authentication_plugin,# this will increase compatibility with older clients. For background, see:# https:///doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin # default-authentication-plugin=mysql_native_passworddatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid# Custom config should go here# 字符集character_set_server=utf8collation-server=utf8_general_ci# 是否对sql语句⼤⼩写敏感,1表⽰不敏感lower_case_table_names = 1#最⼤连接数max_connections = 1000# Innodb缓存池⼤⼩innodb_buffer_pool_size = 4G# 表⽂件描述符的缓存⼤⼩table_open_cache_instances=1table_open_cache=2000table_definition_cache=20007、启动mysqlservice mysqld.service restart8、查看启动状态[root@localhost etc]# systemctl status mysqld● mysqld.service - MySQL ServerLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Active: active (running) since 四 2021-08-26 16:04:16 CST; 1 day 1h agoDocs: man:mysqld(8)/doc/refman/en/using-systemd.htmlMain PID: 8704 (mysqld)Status: "Server is operational"CGroup: /system.slice/mysqld.service└─8704 /usr/sbin/mysqld8⽉ 26 16:04:05 localhost.localdomain systemd[1]: Starting MySQL Server...8⽉ 26 16:04:16 localhost.localdomain systemd[1]: Started MySQL Server.9、配置开机启动systemctl enable mysqldsystemctl daemon-reload10、查看初始化密码[root@localhost etc]# cat /var/log/mysqld.log | grep password2021-08-26T08:04:10.256089Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Gg2P(&gB<>Z)11、输⼊命令进⼊mysqlmysql -uroot -p 回车输⼊初始密码密码(粘贴即可)12、修改密码mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '设置密码';13、创建远程连接root⽤户、授权mysql> use mysql;mysql> create user 'root'@'%' identified by '123456';mysql> grant all privileges on *.* to 'root'@'%' with grant option;mysql> flush privileges;mysql> select user,host from user;mysql> show grants for root@'%';14、使⽤Navicat连接三、⽤户管理1、新增⽤户格式:create user '⽤户名'@localhost identified by '密码'; ——localhost表⽰只允许本地连接,'%' 代表允许所有远程连接,ip表⽰只允许指定ip连接;例⼦:create user 'root'@'%' identified by '123456';# 使⽤password关键字密码需要符合加密⽅式create user 'root'@'%' identified by password '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';2、删除⽤户格式:drop user '⽤户名'@'localhost';例⼦:drop user 'root'@'%';3、查看⽤户# 切换到mysql:use mysql;# 执⾏查看语句:select User,Host,Password from user;4、更改⽤户密码:格式:mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY '设置新密码';例⼦:mysql>ALTER USER 'root'@'%' IDENTIFIED BY '123456';# 使⽤password关键字密码需要符合加密⽅式mysql>ALTER USER 'root'@'%' password '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';格式:mysql>set password for ⽤户名@localhost =password('新密码');例⼦: mysql>set password for root@'%'=password('123456');四、权限管理通常情况下,数据库会根据不同的环境进⾏隔离,有针对性地进⾏权限控制:'root'@'%' : dev环境开放所有权限,sit,uat回收所有权限'root'@'192.168.252.%' : 该⽹段开放所有权限'root'@'IP' : 测试⼈员的IP开放所有权限1、查看⽤户权限:格式:show grants for '⽤户名'@'localhost';例⼦:show grants for 'root'@'%';2、⽤户授予权限:格式:grant 权限列表 on 数据库名.数据表名 to '⽤户表名'@'主机' with grant option;例⼦:grant all privileges on . to 'root'@'%' with grant option;# 指定密码grant all privileges on . to 'root'@'%' identified by '123456' with grant option;# 使⽤password关键字密码需要符合加密⽅式grant all privileges on . to 'root'@'%' identified by password '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' with grant option;3、刷新权限:授权以后⼀定要刷新权限:flush privileges;4、权限回收格式:revoke 权限列表 on 数据库名.数据库表名 from ⽤户名@主机;例⼦:revoke all privileges on pcloud_ust2. from 'root'@'%';5、授权、回收具体权限:select,create,delete,grant赋予:grant select,create,delete on . to 'root'@'localhost' with grant option;回收:revoke select,create,delete,grant option on . from 'root'@'localhost';五、Mysql8.0配置f详解1、关键配置1. 配置⽂件的位置MySQL配置⽂件/etc/f 或者 /etc/f.d/f2. ⼏个关键的⽂件:.pid⽂件,记录了进程id.sock⽂件,是内部通信使⽤的socket接⼝,⽐3306快.log⽂件,⽇志⽂件.cnf或.conf⽂件,配置⽂件安装⽬录:basedir数据⽬录:datadir2、/etc/f[client]port = 3306socket = /tmp/mysql.sock[mysqld]# Mysql服务的唯⼀编号每个mysql服务Id需唯⼀server-id = 1# 服务端⼝号默认3306port = 3306# mysql安装根⽬录basedir = /usr/local/mysql# mysql数据⽂件所在位置datadir = /usr/local/mysql/data# pidpid-file = /usr/local/mysql/mysql.pid# 设置socke⽂件所在⽬录socket = /tmp/mysql.sock# 设置临时⽬录tmpdir = /tmp# ⽤户user = root# 允许访问的IP⽹段bind-address = 0.0.0.0# 跳过密码登录#skip-grant-tables# 主要⽤于MyISAM存储引擎,如果多台服务器连接⼀个数据库则建议注释下⾯内容skip-external-locking# 只能⽤IP地址检查客户端的登录,不⽤主机名skip_name_resolve = 1# 事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)transaction_isolation = READ-COMMITTED# 数据库默认字符集,主流字符集⽀持⼀些特殊表情符号(特殊表情符占⽤4个字节)character-set-server = utf8mb4# 数据库字符集对应⼀些排序等规则,注意要和character-set-server对应collation-server = utf8mb4_general_ci# 设置client连接mysql时的字符集,防⽌乱码init_connect='SET NAMES utf8mb4'# 是否对sql语句⼤⼩写敏感,1表⽰不敏感lower_case_table_names = 1# TIMESTAMP如果没有显⽰声明NOT NULL,允许NULL值explicit_defaults_for_timestamp = true# MySQL连接闲置超过⼀定时间后(单位:秒)将会被强⾏关闭#MySQL默认的wait_timeout 值为8个⼩时, interactive_timeout参数需要同时配置才能⽣效interactive_timeout = 1800wait_timeout = 1800#数据库错误⽇志⽂件log_error = error.log3、其他的配置详解1. 禁⽤mysql的缓存查询结果集功能# 写⼊频繁的数据库,不要开查询缓存# 后期根据业务情况测试决定是否开启# ⼤部分情况下关闭下⾯两项# ⾸先要把Query_cache和该表相关的语句全部置为失效,然后在写⼊更新。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MYSQL数据库管理之权限管理
小编做客服有一阵子了,总是有人在QQ群或者论坛上问关于mysql权限的问题,今天就总结一下关于MYSQL数据库的权限管理的经验。
希望大家看完有所收获啦~
一、MYSQL权限简介
关于mysql的权限简单的理解就是mysql允许你做你权利以内的事情,不可以越界。
比如只允许你执行select操作,那么你就不能执行update操作。
只允许你从某台机器上连接mysql,那么你就不能从除那台机器以外的其他机器连接mysql。
那么MYSQL的权限是如何实现的呢?这就要说到mysql的两阶段的验证,下面详细来介绍:
第一阶段:服务器首先会检查你是否允许连接。
因为创建用户的时候会加上主机限制,可以限制成本地、某个IP、某个IP段、以及任何地方等,只允许你从配置的指定地方登录。
后面在实战的时候会详细说关于主机的限制。
第二阶段:如果你能连接,MYSQL会检查你发出的每个请求,看你是否有足够的权限实施它。
比如你要更新某个表、或者查询某个表,MYSQL会检查你对哪个表或者某个列是否有权限。
再比如,你要运行某个存储过程,MYSQL会检查你对存储过程是否有执行权限等。
MYSQL到底都有哪些权限呢?从官网复制一个表来看看:
权限权限级别权限说明
CREATE数据库、表或索引创建数据库、表或索引权限DROP数据库或表删除数据库或表权限
GRANT OPTION数据库、表或保存的程序赋予权限选项
REFERENCES数据库或表
ALTER表更改表,比如添加字段、索引等DELETE表删除数据权限
INDEX表索引权限
INSERT表插入权限
SELECT表查询权限
UPDATE表更新权限
CREATE VIEW视图创建视图权限
SHOW VIEW视图查看视图权限
ALTER ROUTINE存储过程更改存储过程权限
CREATE ROUTINE存储过程创建存储过程权限
EXECUTE存储过程执行存储过程权限
FILE服务器主机上的文件访问文件访问权限
服务器管理创建临时表权限CREATE TEMPORARY
TABLES
LOCK TABLES服务器管理锁表权限
CREATE USER服务器管理创建用户权限
PROCESS服务器管理查看进程权限
RELOAD服务器管理执行flush-hosts,flush-logs,
flush-privileges,flush-status,
flush-tables,flush-threads,refresh,
reload等命令的权限REPLICATION CLIENT服务器管理复制权限
REPLICATION SLAVE服务器管理复制权限
SHOW DATABASES服务器管理查看数据库权限
SHUTDOWN服务器管理关闭数据库权限
SUPER服务器管理执行kill线程权限
MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明:
权限分布可能的设置的权限
表权限'Select','Insert','Update','Delete','Create','Drop','Grant',
'References','Index','Alter'
列权限'Select','Insert','Update','References'
过程权限'Execute','Alter,Routine','Grant'
针对权限这部分,最主要的是要知道MYSQL是如何验证的(两阶段验证),以及mysql各个权限是做什么用的,以及那些权限用在什么地方(表or列?)。
如果这些把握了那么MYSQL权限对你来说就是小菜一碟了,只要看一下后面的权限管理就可以融会贯通了。
二、MYSQL权限经验原则
权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:
1. 只授予能满足需要的最小权限,防止用户干坏事。
哈哈。
比如用户只是需要查询,那就只给select 权限就可以了,不要给用户赋予update、insert或者delete权限。
2. 创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
3. 初始化数据库的时候删除没有密码的用户。
安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。
4. 为每个用户设置满足密码复杂度的密码。
5. 定期清理不需要的用户。
回收权限或者删除用户。
三、MYSQL权限实战
1. GRANT命令使用说明
先来看一个例子,创建一个只允许从本地登录的超级用户feihong,并允许将权限赋予别的用户,密码为test@feihong.111
GRANT ALL PRIVILEGES ON *.* TO feihong@'localhost' IDENTIFIED BY 'test@feihong.111' WITH GRANT OPTION;
GRANT命令说明:
ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限提到的权限。
ON 用来指定权限针对哪些库和表。
*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。
TO 表示将权限赋予某个用户。
feihong@'localhost' 表示feihong用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。
注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。
IDENTIFIED BY 指定用户的登录密码。
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。
注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其他用户授权。
备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加了一个select权限,然后又给用户添加了一个insert权限,那么该用户就同时拥有了select和insert权限。
2. 创建一个超级用户
创建一个只允许从本地登录的超级用户feihong,并允许将权限赋予别的用户,密码为test@feihong.111
GRANT ALL PRIVILEGES ON *.* TO feihong@'localhost' IDENTIFIED BY 'test@feihong.111' WITH GRANT OPTION;
3. 创建一个网站用户(程序用户)
创建一个一般的程序用户,这个用户可能只需要SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES等权限如果有存储过程还需要加上EXECUTE权限,一般是指定内网网段
192.168.100网段。
GRANT USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE ON `test`.* TO webuser@'192.168.100.%' IDENTIFIED BY 'test@feihong.111';
4. 创建一个普通用户(仅有查询权限)
GRANT USAGE,SELECT ON `test`.* TO public@'192.168.100.%' IDENTIFIED BY 'public@feihong.111';
5. 刷新权限
使用这个命令使权限生效,尤其是你对那些权限表user、db、host等做了update或者delete更新的时候。
以前遇到过使用grant后权限没有更新的情况,大家可以养成习惯,只要对权限做了更改就使用FLUSH PRIVILEGES命令来刷新权限。
FLUSH PRIVILEGES;
6. 查看权限
使用如下命令可以方便的查看到某个用户的权限:
SHOW GRANTS FOR 'webuser'@'192.168.100.%';
7. 回收权限
将前面创建的webuser用户的DELETE权限回收,使用如下命令
REVOKE DELETE ON test.* FROM 'webuser'@'192.168.100.%';
8. 删除用户
注意删除用户不要使用DELETE直接删除,因为使用DELETE删除后用户的权限并未删除,新建同名用户后又会继承以前的权限。
正确的做法是使用DROP USER命令删除用户,比如要删除
'webuser'@'192.168.100.%'用户采用如下命令:
DROP USER 'webuser'@'192.168.100.%';
分享自多备份论坛 转载请注明出处。