[高等教育]mysql 运行权限 阳飞.doc
《[高等教育]mysql 运行权限 阳飞.doc》由会员分享,可在线阅读,更多相关《[高等教育]mysql 运行权限 阳飞.doc(70页珍藏版)》请在三一办公上搜索。
1、mysql 运行权限作者:Admin 来源:ASP中文网 加入时间:2004-3-9对于一个刚安装好的mysql,其安全性是很差的,因为任何使用mysql的用户都能使用和更改数据库的资料,因此需要为mysql的root用户设置口令(mysql的root与linux的root是两回事,它们之间没有任何关系).为root设置口令需要用到mysqladmin这个命令,因为我安装的mysql在/usr/local下,因此,我到目录/usr/local/bin下运行这个命令:#./mysqladmin-urootpasswordpasswdpasswd是我为root设置的口令明文;好了,我在root用户
2、下运行mysql:#mysql被拒绝了,再用下面的命令运行mysql:#mysql-uroot-p出现:Enterpassword:我输入密码后,成功登入了,因此不必再担心有其他用户随意使用数据库了,接着又出现问题了,root权限在mysql里有控制一切的权利,当有用户请求使用数据库时,把root的密码告诉用户也是很危险的,所以我考虑在数据库再设置其他的用户帐号,并将适当的权限开放给他.创建新用户和授权,需要用到下面这个语法:grantprivilegesonwhattouseridentifiedbypasswdwithgrantoptionprivileges分配权限what权限的应用级别
3、user用户passwd密码明文withgrantoption使用这个子句时将允许用户将其权限分配给他人.我准备创建team的用户,并只允许他使用team数据库的权限,所以我使用了以下的名令:#mysql-uroot-ppasswd先运行mysqlgrantallonteam.*toteamlocalhostidentifiedbyteam;在这我给了team用户控制team数据库的所有权限,并且不允许他分配权限给其它人.这样当用户请求使用数据库时,我只需将team用户的密码交给他就行了.另外在web页控制mysql数据库的工具phpMyAdmin是个非常强大而又危险的工具,为了数据库的安全,
4、最好在使用这个工具时,让用户通过认证以策安全,我会在介绍apache服务器配置时介绍如何设置认证.你可以有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表。比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些。下面的例子显示出如何使用mysql客户安装新用户。这些例子假定权限根据以前的章节描述的缺省被安装。这意味着为了改变,你必须在mysqld正在运行同一台机器上,你必须作为MySQLroot用户连接,并且root用户必须对mysql数据库有insert权限和reload管理权限。另外,如果你改变了root用户口令,你必须如下的mysql命令指定它。你
5、可以通过发出GRANT语句增加新用户:shellmysql-user=rootmysqlmysqlGRANTALLPRIVILEGESON*.*TOmontylocalhostIDENTIFIEDBYsomethingWITHGRANTOPTION;mysqlGRANTALLPRIVILEGESON*.*TOmonty%IDENTIFIEDBYsomethingWITHGRANTOPTION;mysqlGRANTRELOAD,PROCESSON*.*TOadminlocalhost;mysqlGRANTUSAGEON*.*TOdummylocalhost;这些GRANT语句安装3个新用户:mo
6、nty可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令(something做这个。注意,我们必须对montylocalhost和monty%发出GRANT语句。如果我们增加localhost条目,对localhost的匿名用户条目在我们从本地主机连接接时由mysql_install_db创建的条目将优先考虑,因为它有更特定的Host字段值,所以以user表排列顺序看更早到来。admin可以从localhost没有一个口令进行连接并且被授予reload和process管理权限的用户。这允许用户执行mysqladminreload、mysqladminrefresh和mysqla
7、dminflush-*命令,还有mysqladminprocesslist。没有授予数据库有关的权限。他们能在以后通过发出另一个GRANT语句授权。dummy可以不用一个口令连接的一个用户,但是只能从本地主机。全局权限被设置为N-USAGE权限类型允许你无需权限就可设置一个用户。它假定你将在以后授予数据库相关的权限。你也可以直接通过发出INSERT语句增加同样的用户存取信息,然后告诉服务器再次装入授权表:shellmysql-user=rootmysqlmysqlINSERTINTOuserVALUES(localhost,monty,PASSWORD(something),Y,Y,Y,Y,Y
8、,Y,Y,Y,Y,Y,Y,Y,Y,Y)mysqlINSERTINTOuserVALUES(%,monty,PASSWORD(something),Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y)mysqlINSERTINTOuserSETHost=localhost,User=admin,Reload_priv=Y,Process_priv=Y;mysqlINSERTINTOuser(Host,User,Password)VALUES(localhost,dummy,);mysqlFLUSHPRIVILEGES;取决于你的MySQL版本,对上述,你可能必须使用一个不同数目Y值(在3.2
9、2.11以前的版本有更少的权限列)。对admin用户,只用在3.22.11开始的版本具有的更加可读的INSERT扩充的语法。注意,为了设置一个超级用户,你只需创造一个user表条目,其权限字段设为Y。不需要db或host表的条目。在user表中的权限列不是由最后一个INSERT语句明确设置的(对dummy用户),因此那些列被赋予缺省值N。这是GRANTUSAGE做的同样的事情。下列例子增加一个用户custom,他能从主机localhost、server.domain和whitehouse.gov连接。他只想要从localhost存取bankaccount数据库,从whitehouse.gov存
10、取expenses数据库和从所有3台主机存取customer数据库。他想要从所有3台主机上使用口令stupid。为了使用GRANT语句设置个用户的权限,运行这些命令:shellmysql-user=rootmysqlmysqlGRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROPONbankaccount.*TOcustomlocalhostIDENTIFIEDBYstupid;mysqlGRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROPONexpenses.*TOcustomwhitehouse.govIDENTIFIE
11、DBYstupid;mysqlGRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROPONcustomer.*TOcustom%IDENTIFIEDBYstupid;通过直接修改授权表设置用户权限,运行这些命令(注意,在结束时FLUSHPRIVILEGES):shellmysql-user=rootmysqlmysqlINSERTINTOuser(Host,User,Password)VALUES(localhost,custom,PASSWORD(stupid);mysqlINSERTINTOuser(Host,User,Password)VALUES(ser
12、ver.domain,custom,PASSWORD(stupid);mysqlINSERTINTOuser(Host,User,Password)VALUES(whitehouse.gov,custom,PASSWORD(stupid);mysqlINSERTINTOdb(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)VALUES(localhost,bankaccount,custom,Y,Y,Y,Y,Y,Y);mysqlINSERTINTOdb(Host,Db,User
13、,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)VALUES(whitehouse.gov,expenses,custom,Y,Y,Y,Y,Y,Y);mysqlINSERTINTOdb(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)VALUES(%,customer,custom,Y,Y,Y,Y,Y,Y);mysqlFLUSHPRIVILEGES;头3个INSERT语句增加user表
14、条目,允许用户custom用给定口令从不同的主机进行连接,但是没有授予任何许可(所有权限被设置为缺省值N)。后3个INSERT语句增加db表条目,授予custom以bankaccount、expenses和customer数据库权限,但是只能在从正确的主机存取时。通常,在授权表直接被修改时,服务器必须被告知再次装入他们(用FLUSHPRIVILEGES)以便使权限修改生效。如果你想要给特定的用户从一个给定的域上的任何机器上存取权限,你可以发出一个如下的GRANT语句:mysqlGRANT.ON*.*TOmyusername%(出处:) 下面就详细介绍如何设置文件系统和授权表mysql,实现My
15、SQL的两级安全性。 0euMXvgTDB7.1MySQL的权限系统 0euMXvgTDBMySQL有一套先进的但非标准的安全/授权系统,掌握其授权机制是开始操作MySQL数据库必须要走的第一步,对于一个熟悉SQL基本操作的人来说,也是MySQL所有的知识中比较难以理解的一个部分。本节通过揭开其授权系统的运作机制,希望大家能够可以更好地操作和使用这个优秀的数据库系统。 0euMXvgTDBMySQL的安全系统是很灵活的,它允许你以多种不同方式设置用户权限。一般地,你可使用标准的SQL语句GRANT和REVOKE语句做,他们为你修改控制客户访问的授权表,然而,你可能由一个不支持这些语句的老版本的
16、MySQL(在3.22.11之前这些语句不起作用),或者你发觉用户权限看起来不是以你想要的方式工作。对于这种情况,了解MySQL授权表的结构和服务器如何利用它们决定访问权限是有帮助的,这样的了解允许你通过直接修改授权表增加、删除或修改用户权限,它也允许你在检查这些表时诊断权限问题。 0euMXvgTDB7.1.1授权表的结构 0euMXvgTDB通过网络连接服务器的客户对MySQL数据库的访问由授权表内容来控制。这些表位于mysql数据库中,并在第一次安装MySQL的过程中初始化(运行mysql_install_db脚本)。授权表共有5个表:user、db、host、tables_priv和c
17、olumns_priv。 0euMXvgTDB7.1.1.1授权表user、db和host的结构和作用 0euMXvgTDB表7-1授权表user、db和host的结构 0euMXvgTDBUser表Db表Host表 0euMXvgTDB作用域列 0euMXvgTDBHostHostHost 0euMXvgTDBDbDb 0euMXvgTDBUserUser 0euMXvgTDBPassword 0euMXvgTDB数据库/表的权限列 0euMXvgTDBAlter_privAlter_privAlter_priv 0euMXvgTDBCreate_privCreate_privDelete_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高等教育 高等教育mysql 运行权限 阳飞 mysql 运行 权限
链接地址:https://www.31ppt.com/p-4562765.html