|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这种服务也提供了足够的监控功能来跟踪性能和使用情况,在问题发生时将发出通知并生成一定深度的分析报告。 MySQL利用于认证目标的用户名,与Unix用户名(登录名字)或Windows用户名有关。缺省地,年夜多半MySQL客户实验利用以后Unix用户名作为MySQL用户名登录,可是这仅仅为了便利,客户程序同意用-u或--user选项指定一个分歧的名字。及与平安的思索,一切的MySQL用户名都应当有口令。
1.MySQL用户名和口令
*MySQL利用于认证目标的用户名,与Unix用户名(登录名字)或Windows用户名有关。缺省地,年夜多半MySQL客户实验利用以后Unix用户名作为MySQL用户名登录,可是这仅仅为了便利,客户程序同意用-u或--user选项指定一个分歧的名字。及与平安的思索,一切的MySQL用户名都应当有口令。
*MySQL用户名最长能够是16各字符;典范地,Unix用户名限定为8个字符。
*MySQL口令与Unix口令不妨。
*MySQL加密口令利用了一个Unix登录时代所用的分歧算法,PASSWORD()和ENCRYPT()
函数PASSWORD(str)
从纯文本口令str盘算一个口令字符串。该函数被用于为了在user受权表的Password列中存储口令而加密MySQL口令。
mysql>selectPASSWORD(badpwd);
->7f84554057dd964b
PASSWORD()加密长短可逆的。PASSWORD()不以与Unix口令加密的不异的办法实行口令加密。你不该该假定假如你的Unix口令和你的MySQL口令是一样的,PASSWORD()将招致与在Unix口令文件存储的不异的加密值。见ENCRYPT()。
ENCRYPT(str[,salt])
利用Unixcrypt()体系挪用加密str。salt参数应当是一个有2个字符的字符串。(MySQL3.22.16中,salt能够善于2个字符。)
mysql>selectENCRYPT("hello");
->VxuFAJXVARROc
假如crypt()在你的体系上不成用,ENCRYPT()老是前往NULL。ENCRYPT()只保存str肇端8个字符而疏忽一切其他,最少在某些体系上是如许。这将由底层的crypt()体系挪用的举动决意。
1.与MySQL服务器毗连
语法格局:
shell>mysql[-hhost_name][-uuser_name][-pyour_pass]
-h,-u和-p选项的另外一种情势是--host=host_name、--user=user_name和--password=your_pass。
注重:在-p或--password=与跟从它前面的口令之间没有空格。(在命令行上指定一个口令是不平安的!)
关于命令行没有的连接参数,mysql利用缺省值:
*缺省主机名是localhost。
*缺省用户名是你的Unix登录名。
*假如没有-p,则没有供应口令。
缺省值参数的指定:
在你的主目次下“.my.cnf”的设置文件的[client]大节里指定毗连参数:
[client]
host=host_name
user=user_name
password=your_pass
注:命令行上被指定的值优先于在设置文件和情况变量中指定的值
最平安的办法是让客户程序提醒口令或在一个得当回护的“.my.cnf”文件中指定口令。
1.MySQL供应的权限
权限 列 高低文
selectSelect_priv表
insertInsert_priv表
updateUpdate_priv表
deleteDelete_priv表
indexIndex_priv表
alterAlter_priv表
createCreate_priv数据库、表或索引
dropDrop_priv数据库或表
grantGrant_priv数据库或表
referencesReferences_priv数据库或表
reloadReload_priv服务器办理
shutdownShutdown_priv服务器办理
processProcess_priv服务器办理
fileFile_priv在服务器上的文件存取
注:grant权限同意你把你本人具有的那些权限授给其他的用户。
file权限赐与你用LOADDATAINFILE和SELECT...INTOOUTFILE语句读和写服务器上的文件,任何被授与这个权限的用户都能读或写MySQL服务器能读或写的任何文件。
2.存取把持:毗连证明
身份反省利用user表3个(Host,User和Password)局限字段。服务器只要在一个user表条目婚配你的主机名和用户名而且你供应了准确的口令时才承受毗连。
注:一个Host值能够是主机名或一个IP数字,或localhost指出当地主机。能够在Host字段里利用通配符字符“%”和“_”。Host值%婚配任何主机名。当一个毗连被实验时,服务器扫瞄排序的条目并利用找到的第一个婚配。
广泛的曲解是以为,对一个给定的用户名,当服务器试图对毗连寻觅婚配时,明白定名谁人用户的一切条目将起首被利用。这分明不是现实。
3.存取把持:哀求证明
一旦你创建了一个毗连,服务器进进阶段2。对在此毗连长进来的每一个哀求,服务器反省你是不是有充足的权限来实行它,受权表用GRANT和REVOKE命令操纵。
GRANTpriv_type[(column_list)][,priv_type[(column_list)]...]
ON{tbl_name**.*db_name.*}
TOuser_name[IDENTIFIEDBYpassword]
[,user_name[IDENTIFIEDBYpassword]...]
[WITHGRANTOPTION]
REVOKEpriv_type[(column_list)][,priv_type[(column_list)]...]
ON{tbl_name**.*db_name.*}
FROMuser_name[,user_name...]
GRANT在MySQL3.22.11或今后版本中完成。关于更早MySQL版本,GRANT语句不做任何事变。
GRANT和REVOKE命令同意体系主管在4个权限级别上受权和撤回付与MySQL用户的权力:
全局级别
全局权限感化于一个给定服务器上的一切数据库。这些权限存储在mysql.user表中。
数据库级别
数据库权限感化于一个给定命据库的一切表。这些权限存储在mysql.db和mysql.host表中。
表级别
表权限感化于一个给定表的一切列。这些权限存储在mysql.tables_priv表中。
列级别
列权限感化于在一个给定表的单个列。这些权限存储在mysql.columns_priv表中。
user表权限是超等用户权限。只把user表的权限授与超等用户如服务器或数据库主管是明智的。对其他用户,你应当把在user表中的权限设成N而且仅在一个特定命据库的基本上受权,利用db和host表。
4.权限变动什么时候失效
当mysqld启动时,一切的受权表内容被读进存储器而且从那点失效。
用GRANT、REVOKE或SETPASSWORD对受权表实施的修正会当即被服务器注重到。
假如你手工地修正受权表(利用INSERT、UPDATE等等),你应当实行一个FLUSHPRIVILEGES语句或运转mysqladminflush-privileges告知服务器再装载受权表,不然你的改动将不失效,除非你重启服务器。
5.创建初始的MySQL权限
在安装MySQL后,你经由过程运转scripts/mysql_install_db安装初始的存取权限。包括以下权限汇合:
*MySQLroot用户作为可做任何事变的一个超等用户。毗连必需由当地主机收回。注重:出生的root口令是空的,因而任何人能以root而没有一个口令举行毗连而且被授与一切权限。
*一个匿名用户,他可对有一个test或以test_入手下手的名字的数据库做任什么时候期事变,毗连必需由当地主机收回。这意味着任何当地用户能毗连而且视为匿名用户。
*其他权限被回绝。比方,一样平常用户不克不及利用mysqladminshutdown或mysqladminprocesslist。
为MySQLroot用户指定一个口令(注重,你利用PASSWORD()函数指定口令):
shell>mysql-urootmysql
mysql>UPDATEuserSETPassword=PASSWORD(new_password)
WHEREuser=root;
mysql>FLUSHPRIVILEGES;
在MySQL3.22和以上版本中,你可使用SETPASSWORD语句:
shell>mysql-urootmysql
mysql>SETPASSWORDFORroot=PASSWORD(new_password);
设置口令的另外一种办法是利用mysqladmin命令:
shell>mysqladmin-urootpasswordnew_password
看看scripts/mysql_install_db剧本,看它怎样安装缺省的权限。你可用它作为一个研讨怎样增添其他用户的基本
为了完整重修权限表,删除在包括mysql数据库的目次下一切“*.frm”,“*.MYI”和“*.MYD”文件。(这是在数据库目次上面定名为“mysql”的目次,当你运转mysqld--help时,它被列出。)然后运转mysql_install_db剧本,大概在起首编纂它具有你想要的权限以后。
1.向MySQL增添新用户权限
增添用户2个分歧的办法:
经由过程利用GRANT语句或经由过程间接操纵MySQL受权表。
对照好的办法是利用GRANT语句,由于他们是更简明而且仿佛毛病少些。
shell>mysql--user=rootmysql
mysql>GRANTALLPRIVILEGESON*.*TOmonty@localhost
IDENTIFIEDBYsomethingWITHGRANTOPTION;
mysql>GRANTALLPRIVILEGESON*.*TOmonty@"%"
IDENTIFIEDBYsomethingWITHGRANTOPTION;
mysql>GRANTRELOAD,PROCESSON*.*TOadmin@localhost;
mysql>GRANTUSAGEON*.*TOdummy@localhost;
monty
能够从任何中央毗连服务器的一个完整的超等用户,可是必需利用一个口令(something做这个。注重,我们必需对monty@localhost和monty@"%"收回GRANT语句。假如我们增添localhost条目,对localhost的匿名用户条目在我们从当地主机毗连接时由mysql_install_db创立的条目将优先思索,由于它有更特定的Host字段值,以是以user表分列按次看更早到来。
admin
能够从localhost没有一个口令举行毗连而且被授与reload和process办理权限的用户。这同意用户实行mysqladminreload、mysqladminrefresh和mysqladminflush-*命令,另有mysqladminprocesslist。没有授与数据库有关的权限。他们能在今后经由过程收回另外一个GRANT语句受权。
dummy
能够不必一个口令毗连的一个用户,可是只能从当地主机。全局权限被设置为N--USAGE权限范例同意你无需权限便可设置一个用户。它假定你将在今后授与数据库相干的权限。
也能够间接经由过程收回INSERT语句增添一样的用户存失信息,然后告知服务器再次装进受权表:
shell>mysql--user=rootmysql
mysql>INSERTINTOuserVALUES(localhost,monty,PASSWORD(something),
Y,Y,Y
<Pstyle="TEXT-INDENT:2em">
根据Evans的调查报告,“MySQL的使用在未来将继续呈成长趋势。” |
|