|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
首先我们要知道,或许有一项技术存在很多理由让我们可以选择使用MySQL学习教程,但是让我们不使用它往往只要有一个理由就足够了。有2个分歧的办法增添用户:经由过程利用GRANT语句或经由过程间接操纵MySQL受权表。对照好的办法是利用GRANT语句,由于他们是更简明而且仿佛毛病少些。
上面的例子显现出怎样利用mysql客户安装新用户。这些例子假定权限依据之前的章节形貌的缺省被安装。这意味着为了改动,你必需在mysqld正在运转统一台呆板上,你必需作为MySQLroot用户毗连,而且root用户必需对mysql数据库有insert权限和reload办理权限。别的,假如你改动了root用户口令,你必需以下的mysql命令指定它。
你能够经由过程收回GRANT语句增添新用户:
shell>mysql--user=rootmysql
mysql>GRANTALLPRIVILEGESON*.*TOmonty@localhost
IDENTIFIEDBYsomethingWITHGRANTOPTION;
mysql>GRANTALLPRIVILEGESON*.*TOmonty@"%"
IDENTIFIEDBYsomethingWITHGRANTOPTION;
mysql>GRANTRELOAD,PROCESSON*.*TOadmin@localhost;
mysql>GRANTUSAGEON*.*TOdummy@localhost;
这些GRANT语句安装3个新用户:
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,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y)
mysql>INSERTINTOuserVALUES(%,monty,PASSWORD(something),
Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y)
mysql>INSERTINTOuserSETHost=localhost,User=admin,
Reload_priv=Y,Process_priv=Y;
mysql>INSERTINTOuser(Host,User,Password)
VALUES(localhost,dummy,);
mysql>FLUSHPRIVILEGES;
取决于你的MySQL版本,对上述,你大概必需利用一个分歧数量Y值(在3.22.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存取expenses数据库和从一切3台主机存取customer数据库。他想要从一切3台主机上利用口令stupid。
为了利用GRANT语句设置个用户的权限,运转这些命令:
shell>mysql--user=rootmysql
mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ONbankaccount.*
TOcustom@localhost
IDENTIFIEDBYstupid;
mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ONexpenses.*
TOcustom@whitehouse.gov
IDENTIFIEDBYstupid;
mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ONcustomer.*
TOcustom@%
IDENTIFIEDBYstupid;
经由过程间接修正受权表设置用户权限,运转这些命令(注重,在停止时FLUSHPRIVILEGES):
shell>mysql--user=rootmysql
mysql>INSERTINTOuser(Host,User,Password)
VALUES(localhost,custom,PASSWORD(stupid));
mysql>INSERTINTOuser(Host,User,Password)
VALUES(server.domain,custom,PASSWORD(stupid));
mysql>INSERTINTOuser(Host,User,Password)
VALUES(whitehouse.gov,custom,PASSWORD(stupid));
mysql>INSERTINTOdb
(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);
mysql>INSERTINTOdb
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
VALUES
(whitehouse.gov,expenses,custom,Y,Y,Y,Y,Y,Y);
mysql>INSERTINTOdb
(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,
Create_priv,Drop_priv)
VALUES(%,customer,custom,Y,Y,Y,Y,Y,Y);
mysql>FLUSHPRIVILEGES;
头3个INSERT语句增添user表条目,同意用户custom用给定口令从分歧的主机举行毗连,可是没有授与任何允许(一切权限被设置为缺省值N)。后3个INSERT语句增添db表条目,授与custom以bankaccount、expenses和customer数据库权限,可是只能在从准确的主机存取时。一般,在受权表间接被修正时,服务器必需原告知再次装进他们(用FLUSHPRIVILEGES)以便使权限修正失效。
假如你想要给特定的用户从一个给定的域上的任何呆板上存取权限,你能够收回一个以下的GRANT语句:
mysql>GRANT...
ON*.*
TOmyusername@"%.mydomainname.com"
IDENTIFIEDBYmypassword;
为了经由过程间接修正受权表做一样的事变,如许做:
mysql>INSERTINTOuserVALUES(%.mydomainname.com,myusername,
PASSWORD(mypassword),...);
mysql>FLUSHPRIVILEGES;
你也能够利用xmysqladmin、mysql_webadmin乃至xmysql在受权表中拔出、改动和更新值。你能够在MySQL的Contrib目次找到这些有用程序。
你可以配置MySQL运行在微小的嵌入式应用程序中,处理的数据可能不足1Mb??而你也可以用它来处理数Tb的数据。MySQL获得这种可扩展性的路径之一是通过一个人们所熟知的存储过程,这是一个运行在程序之外的微型、预编译程序。 |
|