MySQL-DBA-安全管理_第1页
MySQL-DBA-安全管理_第2页
MySQL-DBA-安全管理_第3页
MySQL-DBA-安全管理_第4页
MySQL-DBA-安全管理_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 DATE yyyy-M-d 2007-11-28 FILENAME mysql安全管理.docPage PAGE 6 of NUMPAGES 6Mysql安全管理*网络科技(上海)有限公司Mysql安全管理一、 mysql访问控制mysql的访问分两个阶段:1. 检查用户是否具有建立与mysql的连接的权利,主要依靠检查:用户名、主机名和密码;2. 建立了连接后,服务器检查客户端发出的每个请求。看是否有足够的权限实施它。例如执行select命令等。二、 权限控制1. mysql访问权限管理通过6个表:user、db、host、tables_priv、columns_priv和procs_pr

2、iv来控制,6个表的作用如下表: 表名含义user控制“用户名”(user)可以从哪一台“主机名”(host)访问mysql该表包括全局权限的控制Db规定哪个用户可以访问哪个数据库Hosthost表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限Tables_priv规定谁可以访问数据库的哪一个表columns_priv规定谁可以访问表的哪一个列procs_priv规定谁可以执行哪个存储过程2. mysql识别的权限如下表:Mysql权限对应权限列含义用于数据表访问Select Select_priv是否可以读取表的数据InsertInsert_priv是否可以向表中插入新的记录

3、deleteDelete_priv是否可以删除表中现有记录UpdateUpdate_priv是否可以更新表中现有记录Lock tablesLock_tables_priv是否可以锁定表用于改变数据库、数据表和视图CreateCreate_priv是否可以创建一个新的数据库和数据表Create temporary tableCreate_tmp_table_priv是否可以创建临时表AlterAlter_priv是否可以重命名并改变它的结构IndexIndex_priv是否可以添加或删除表索引ReferencesReferences_priv暂不用DropDrop_priv是否可以删除现有的数据

4、库或表Create viewCreate_view_priv是否可以创建视图Show viewShow_view_priv是否是可以检查视图定义用于存储过程Alter routineAlter_routine_priv是否改变现有的存储过程Create routineCreate_routine_priv是否可以定义新的存储过程ExecuteExecute_priv是否可以执行存储过程用于数据库访问FileFile_priv是否可以读取和改变本地文件系统的文件Create userCreate_user_priv是否可以创建新用户用于mysql管理Grant optionGrant_priv是

5、否可以赋予其他用户个人的权限Show databasesShow_db_priv是否可以看到一份全体数据库的清单ProcessProcess_priv是否可以看淡到其他用户的mysql进程SuperSuper_priv是否可以终止其他用户的mysql进程(kill)ReloadReload_priv是否可以执行各种命令Replication clientRepl_client_priv是否可以决定镜像系统中参与者的信息Replication slaveRepl_slient_priv是否可以通过镜像机制读取msyql服务器数据ShoutdownShutdown_priv是否可以关闭mysql3

6、. 6个数据权限表的结构user表db表host表tables_priv表columns_pirv表proc_priv表访问控制列Host Host Host Host Host Host User Db Db Db Db Db Password User User User User 数据库/表权限控制列Select_priv Select_priv Select_priv Table_name Table_name Routine_name Insert_priv Insert_priv Insert_priv Grantor Column_name Routine_type Update

7、_priv Update_priv Update_priv Timestamp Timestamp Grantor Delete_priv Delete_priv Delete_priv Table_priv Column_priv Proc_priv Create_priv Create_priv Create_priv Column_priv Timestamp Drop_priv Drop_priv Drop_priv Reload_priv Grant_priv Grant_priv Shutdown_priv References_priv References_priv Proce

8、ss_priv Index_priv Index_priv File_priv Alter_priv Alter_priv Grant_priv Create_tmp_table_priv Create_tmp_table_priv References_priv Lock_tables_priv Lock_tables_priv Index_priv Create_view_priv Create_view_priv Alter_priv Show_view_priv Show_view_priv Show_db_priv Create_routine_priv Create_routine

9、_priv Super_priv Alter_routine_priv Alter_routine_priv Create_tmp_table_priv Execute_priv Execute_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv 安全控制列ssl_type ssl_cipher x509_issuer x509_subj

10、ect 资源控制列:max_questions :规定每个小时之内可以允许执行多少次数据查询max_updates :规定每个小时之内可以允许执行多少次数据修改max_connections :规定每个小时单个用户可以连接到少此max_user_connections :规定单个用户同时连接多少数说明:1).user表中的字段列代表的全局的权限,即一个用户如果在user表中设置允许某个操作,则该用户对所有数据库都可以操作,例如如果给一个用户授予select,则该用户对所有数据库都读的权限;其他表 2).当user表的全局权限与其他表对象权限都有设置时,有下列关系:User表Y(select为例

11、)N(select为例)YYYNYN3数据访问列的内容 3.1、 Host 字段一个Host列值可以是一个主机名或一个IP地址。可以用通配符指定Host值。可以使用SQL的模式字符“%”和“_”并具有当你在一个查询中使用LIKE算符同样的含义(不允许regex算符)。 (例如:192.168.3.%匹配任何在192.168.3 C类子网的主机。)3.2、User 字段用户名必须是文字的或空白。一个空白值匹配任何用户。%作为一个User值不意味着空白,而是匹配一个字面上的%名字, 当一个到来的连接通过user表被验证而匹配的记录包含一个空白的User值,客户被认为是一个匿名用户。 3.3、Pas

12、sword字段 口令值可以是空或非空,不允许用通配符。一个空口令不意味着匹配任何口令,它意味着用户必须不指定口令。3.4、Db字段在columns_priv和tables_priv表中,Db值必须是真正的数据库名(照字面上),不允许模式和空白。在db和host中,Db值可以以字面意义指定或使用SQL模式字符%或_指定一个通配符。一个%或空白匹配任何数据库。 3.5、Table_name,Column_name字段这些列中的值必须是照字面意思的表或列名,不允许模式和空白。 3.6、mysql匹配连接关系如下三、权限分配管理:权限可分为以下层级: 全局层级: 全局权限适用于一个给定服务器中的所有数

13、据库。这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。数据库层级 :数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。表层级:表权限适用于一个给定表中的所有列。这些权限存储在mysql.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权

14、限。列层级:列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。子程序层级:CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在cs_priv表中。授权管理:根据操作人员的所在职责要求具体操作如下:2.1:数据库管理员: 权限:全局层的所有的操作权限: 操作:grant all privileges on

15、 *.* to usenamehostnane IDENTIFIED by password with grant option 2.2:数据库操作者: 权限:表层级的访问和更新权限: 2.2.1授予某个用户某个表的操作权限: 操作:grant select,update on dbname.tbl_name to usenamehostnane IDENTIFIED by password 2.2.2授予某个用户表的某个字段操作权限: 操作:grant update(column_name) on dbname.tbl_name to usenamehostnane IDENTIFIED b

16、y password 2.3:数据访问者: 权限:表层级的访问权限: 操作:grant select on dbname.tbl_name to usenamehostnane IDENTIFIED by password2.4:执行存储过程的权限: 权限:可以执行某个数据库的存储过程或者函数 操作:grant Execute on dbname.* to usenamehostnane IDENTIFIED by password 说明:1.创建某个数据库的某个存储过程的执行权限操作为: insert into procs_priv (Host, Db, User, Routine_name

17、, Routine_type, Grantor, Proc_priv, Timestamp) values(host,dbname,username,proc_name,PROCEDURE,存 储过程创建者的访问帐号,Execute,Alter Routine,2007-08-14 17:33:39); 2.mysql的中,root用户可以执行、修改任何用户创建的存储过程; 其他访问用户只能修改自己创建的存储过程,如果想要修改其他用户 的存储过程,则必须要授予c表的选择权限。(如果某用户 被授予了此权限,则此用户也拥有了他能访问的数据库的所有存储过 程的执行权限)2.5:限制

18、某个帐户的资源使用: 权限:访问帐号在每个小时内可以查询多少次、访问多少次等: 操作:GRANT ALL ON dbname.* TO usernamehostname IDENTIFIED BY frank WITH MAX_QUERIES_PER_HOUR 20 MAX_UPDATES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 5 MAX_USER_CONNECTIONS 2; 说明:WITH MAX_QUERIES_PER_HOUR 20:平均每小时可以执行20次查询; MAX_UPDATES_PER_HOUR 10:平均每个小时可以执行20次更新; MA

19、X_CONNECTIONS_PER_HOUR 5:每小时最大连接用户数; MAX_USER_CONNECTIONS 2:单个用户每小时可连接两次;说明:对于修改数据库、表、视图的修改,存储过程和函数的创建和修改权限,授 权和资源控制权限一旦授权后存在风险,建议应该只有管理员拥有这些权限Mysql连接匹配关系如下表:编号Host值User值匹配连接1LocalhostRootRoot用户,从本地可以连接2192.168.1.%RootRoot用户,从192.168.1的子网可以连接3RootRoot用户,从的主机可以连接4空值任何用户,从的主机都可以连

20、接5%RootRoot用户,从任何主机都可以连接6%空值任何用户,任何主机都可以连接7空值空值任何用户,任何主机都可以连接8Localhost空值任何用户,从localhost都可以连接说明: 在连接中如果没有指定连接参数,mysql客户端程序使用默认值:1. 默认主机名上localhost,默认用户名在windows中是odbc,在linux中是 linux的登陆名; 2. 如果在mysql.user表中同时存在编号7、8两个访问连接,那么在当客户 端的连接参数都为空时,mysql默认匹配编号为8的连接,如果只存在7, 那么匹配编号7的连接;帐户管理4.1.给root帐户和没有设置密码的帐户设置一个强密码: 操作:SET PASSWORD FOR root= PASSWORD(biscuit); 或者:GRANT USAGE ON *.* TO usernmae IDENTIFIED BY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论