逍遥一派 发表于 2015-1-16 22:16:47

MYSQL教程之MySQL权限的具体解答

这是无法比较的,因为基于云的数据库提供了不同的模式。关键是要通过围绕云计算产品来包装其他增值服务以适应不断变化的市场条件:这就是DBaaS。MySQL权限的具体解答一.权限表
mysql数据库中的3个权限表:user、db、host
权限表的存取历程是:
1)先从user表中的host、user、password这3个字段中判别毗连的IP、用户名、暗码是不是存在表中,存在则经由过程身份考证;
2)经由过程权限考证,举行权限分派时,依照user?db?tables_priv?columns_priv的按次举行分派。即先反省全局权限表user,假如user中对应的权限为Y,则此用户对一切数据库的权限都为Y,将不再反省db,tables_priv,columns_priv;假如为N,则到db表中反省此用户对应的详细数据库,并失掉db中为Y的权限;假如db中为N,则检查tables_priv中此数据库对应的详细表,获得表中的权限Y,以此类推。
二.MySQL各类权限(共27个)
(以下操纵都是以root身份上岸举行grant受权,以p1@localhost身份上岸实行各类命令。)

1.usage
毗连(上岸)权限,创建一个用户,就会主动授与其usage权限(默许授与)。
mysql>grantusageon*.*to‘p1′@’localhost’identifiedby‘123′;
该权限只能用于数据库上岸,不克不及实行任何操纵;且usage权限不克不及被接纳,也即REVOKE用户其实不能删除用户。
2.select
必需有select的权限,才可使用selecttable
mysql>grantselectonpyt.*to‘p1′@’localhost’;
mysql>select*fromshop;
3.create
必需有create的权限,才可使用createtable
mysql>grantcreateonpyt.*to‘p1′@’localhost’;
4.createroutine
必需具有createroutine的权限,才可使用{createalterdrop}{procedurefunction}
mysql>grantcreateroutineonpyt.*to‘p1′@’localhost’;
当授与createroutine时,主动授与EXECUTE,ALTERROUTINE权限给它的创立者:
mysql>showgrantsfor‘p1′@’localhost’;
+—————————————————————————+
Grantsforp1@localhost
+————————————————————————–+
GRANTUSAGEON*.*TO‘p1′@’localhost’IDENTIFIEDBYPASSWORD‘*23AE809DDACAF96AF0FD78ED04B6A265E05AA257′
GRANTSELECT,CREATE,CREATEROUTINEON`pyt`.*TO‘p1′@’localhost’
GRANTEXECUTE,ALTERROUTINEONPROCEDURE`pyt`.`pro_shop1`TO‘p1′@’localhost’
+————————————————————————————-+
5.createtemporarytables(注重这里是tables,不是table)
必需有createtemporarytables的权限,才可使用createtemporarytables.
mysql>grantcreatetemporarytablesonpyt.*to‘p1′@’localhost’;
$mysql-hlocalhost-up1-ppyt
mysql>createtemporarytablett1(idint);
6.createview
必需有createview的权限,才可使用createview
mysql>grantcreateviewonpyt.*to‘p1′@’localhost’;
mysql>createviewv_shopasselectpricefromshop;
7.createuser
要利用CREATEUSER,必需具有mysql数据库的全局CREATEUSER权限,或具有INSERT权限。
mysql>grantcreateuseron*.*to‘p1′@’localhost’;
或:mysql>grantinserton*.*top1@localhost;
8.insert
必需有insert的权限,才可使用insertinto…..values….
9.alter
必需有alter的权限,才可使用altertable
altertableshopmodifydealerchar(15);
10.alterroutine
必需具有alterroutine的权限,才可使用{alterdrop}{procedurefunction}
mysql>grantalterroutineonpyt.*to‘p1′@’localhost‘;
mysql>dropprocedurepro_shop;
QueryOK,0rowsaffected(0.00sec)

mysql>revokealterroutineonpyt.*from‘p1′@’localhost’;
$mysql-hlocalhost-up1-ppyt
mysql>dropprocedurepro_shop;
ERROR1370(42000):alterroutinecommanddeniedtouser‘p1′@’localhost’forroutine‘pyt.pro_shop’
11.update
必需有update的权限,才可使用updatetable
mysql>updateshopsetprice=3.5wherearticle=0001anddealer=’A’;
12.delete
必需有delete的权限,才可使用deletefrom….where….(删除表中的纪录)
13.drop
必需有drop的权限,才可使用dropdatabasedb_name;droptabletab_name;
dropviewvi_name;dropindexin_name;
14.showdatabase
经由过程showdatabase只能看到你具有的某些权限的数据库,除非你具有全局SHOWDATABASES权限。
关于p1@localhost用户来讲,没有对mysql数据库的权限,以是以此身份上岸查询时,没法看到mysql数据库:
mysql>showdatabases;
+——————–+
Database
+——————–+
information_schema
pyt
test
+——————–+
15.showview
必需具有showview权限,才干实行showcreateview。
mysql>grantshowviewonpyt.*top1@localho
<p>MySQLAB公司的一个高级开发者者表示,“这个特点使得MySQL可以根据你当前的系统的需要来进行调整。”

只想知道 发表于 2015-1-19 06:34:52

所以你总能得到相应的升级版本,来满足你的需求。

若天明 发表于 2015-1-26 06:04:37

我个人认为就是孜孜不懈的学习

谁可相欹 发表于 2015-2-4 13:41:12

可以动态传入参数,省却了动态SQL的拼写。

山那边是海 发表于 2015-2-10 00:23:01

SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.

因胸联盟 发表于 2015-2-28 10:40:31

从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。

小女巫 发表于 2015-3-9 22:51:10

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

再现理想 发表于 2015-3-17 03:06:53

其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。

admin 发表于 2015-3-23 17:59:16

只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
页: [1]
查看完整版本: MYSQL教程之MySQL权限的具体解答