第二个灵魂 发表于 2015-1-16 20:15:01

发一篇向MySQL增添新用户权限

MySQL部署迅速,因此移植过程不会导致生产中断。而且,较短的学习曲线可以让你的系统管理员迅速掌握它的运行和维护。而且,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的一个有说服力的MySQL学习教程,但是对于一些比较守旧的IT经理来说,在为一些关键业务选择平台的时候,平台的成熟性却是必须要考虑的一个因素,在这一点上,MySQL无疑毫无优势。

不帅 发表于 2015-1-18 19:23:15

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

冷月葬花魂 发表于 2015-1-27 05:05:36

入门没那么困难,精通没那么容易

兰色精灵 发表于 2015-2-5 02:13:48

SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。

小妖女 发表于 2015-2-11 02:57:46

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

分手快乐 发表于 2015-3-1 20:12:26

外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。

灵魂腐蚀 发表于 2015-3-10 23:39:14

如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。

老尸 发表于 2015-3-17 16:10:36

总感觉自己还是不会SQL

再现理想 发表于 2015-3-24 12:20:59

groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
页: [1]
查看完整版本: 发一篇向MySQL增添新用户权限