sql语言用grant语句向用户授予 *** 作权限,grant语句的一般格式为:
grant
<权限>[,<权限>]
[on
<对象类型>
<对象名>]
to
<用户>[,<用户>]
[with
grant
option];
其语义为:将对指定 *** 作对象的指定 *** 作权限授予指定的用户。
不同类型的 *** 作对象有不同的 *** 作权限,常见的 *** 作权限如表3-4所示。
表3-4
不同对象类型允许的 *** 作权限
对象
对象类型
*** 作权限
属性列
table
select,
insert,
update,
delete
all
privieges
视图
table
select,
insert,
update,
delete
all
privieges
基本表
table
select,
insert,
update,
alter,
index,delete
all
privieges
database
createtab
详细信息…
接受权限的用户可以是一个或多个具体用户,也可以是public即全体用户。
如果指定了with
grant
option子句,则获得某种权限的用户还可以把这种权限再授予别的用户。如果没有指定with
grant
option子句,则获得某种权限的用户只能使用该权限,但不能传播该权限。
例1
把查询student表权限授给用户u1
grant
select
on
table
student
to
u1;
例2
把对student表和course表的全部权限授予用户u2和u3
grant
all
priviliges
on
table
student,
course
to
u2,
u3;
例3
把对表sc的查询权限授予所有用户
grant
select
on
table
sc
to
public;
例4
把查询student表和修改学生学号的权限授给用户u4
详细信息…
这里实际上要授予u4用户的是对基本表student的select权限和对属性列sno的update权限。授予关于属性列的权限时必须明确指出相应属性列名。完成本授权 *** 作的sql语句为:
grant
update(sno),
select
on
table
student
to
u4;
例5
把对表sc的insert权限授予u5用户,并允许他再将此权限授予其他用户
grant
insert
on
table
sc
to
u5
with
grant
option;
详细信息…
执行此sql语句后,u5不仅拥有了对表sc的insert权限,还可以传播此权限,即由u5用户发上述grant命令给其他用户。
例如u5可以将此权限授予u6:
grant
insert
on
table
sc
to
u6
with
grant
option;
同样,u6还可以将此权限授予u7:
grant
insert
on
table
sc
to
u7;
因为u6未给u7传播的权限,因此u7不能再传播此权限。
例6
dba把在数据库s_c中建立表的权限授予用户u8
grant
createtab
on
database
s_c
to
u8;
grant insert on sc to 用户名
比如你的用户名叫user
grant insert on sc to user
那个table没必要写哦
你用的什么数据库?
方便的话把你语句帖出来
你说的那个用户和学生表里的用户根本不是一回事啊,这里说的用户是指数据库用户,你看学生用户是用哪个数据库用户登录的,把权限给这个数据库用户授权
那就要看你用的什么做的系统了,每种系统应该不一样的
要不你就建点数据库用户,授权查询和insert
grant select,insert on sc to user
你把user改成数据库中的用户,user我只是用来代替数据库用户的
--------补充---------
1确认验证模式
在 SQL Server Management Studio 中,对象资源管理器,主机名上点右键,主机属性,安全,确认"服务器身份验证"为"SQL和Windows身份验证模式"
2新建登录名
在主机名树下的安全性中,添加登录名,在登录名项上右键,新键登录名
例:登录名:User01,模式为SQL验证,密码:User01
去掉"强制实施密码策略"的复选,默认数据库指向你允许访问的数据库
还没有完,别急着点确定
3用户映射
在左侧列表中,点击"用户映射",找到你允许访问的数据库,在前面打对勾
在下方的"数据库角色成员身份"只,赋于对应的权限
相关角色的权限说明,可以在网上搜索,例如:
>
数据库的权限是指允许特定用户访问特定数据库或数据库表的授权。按照降序范围,数据库的权限主要有三种类型:数据库、系统和对象。
1 数据库权限:
执行特定类型的SQL语句;
访问其他用户的对象;
控制计算资源的使用;
不适用于数据库管理员(DBA)。
2 系统权限:
对特定类型的对象执行活动,如创建、更改、删除等;
例如,增加或删除某个数据库任何表格的行与列。
3 对象权限:
对特定表、函数或包执行特定 *** 作的权限;
例如,删除某个表格中的行;
允许用户插入、删除、更新或选择数据库对象中的数据;
对象的所有者拥有该对象的所有对象权限,并且这些权限不能被撤销;
对象的所有者可以将该对象的对象权限授予其他数据库用户;
具有管理员权限的用户可以向用户授予和撤销对象权限,该用户无授予权限的对象。
针对数据库的权限有对应的权限命令,在多用户数据库环境中加强数据库安全。权限命令主要有三个:
1 GRANT命令:提供用户对数据库对象的访问权限,还允许用户向其他用户授予访问权限。该命令的基本语法是:
GRANT SELECT ON <table1> to <user1> 授予user1对table1的SELECT *** 作权限
2 REVOKE命令:删除用户对数据库对象的访问权限。该命令的基本语法是:
REVOKE DELETE ON <table1> FROM <user1>删除user1对table1的DELETE *** 作权限
3 DENY命令:拒绝对对象的权限,并阻止主体基于组或角色中的成员身份获得GRANT权限。该命令的基本语法是:
DENY UPDATE ON <table1> to <user1>拒绝user1对table1的UPDATE *** 作权限
1、改表法。
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;
2、授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WI
TH GRANT OPTION;
如果你想允许用户myuser从ip为19216816的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON TO 'myuser'@'19216813'IDENTIFIED BY
'mypassword' WITH GRANT OPTION;
我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES
使修改生效,就可以了
另外一种方法:
在安装mysql的机器上运行:
1、d:\mysql\bin\>mysql -h localhost -u root
//这样应该可以进入MySQL服务器
2、mysql>GRANT ALL PRIVILEGES ON TO 'root'@'%'WITH GRANT OPTION
//赋予任何主机访问数据的权限
3、mysql>FLUSH PRIVILEGES
//修改生效
4、mysql>EXIT
//退出MySQL服务器
这样就可以在其它任何的主机上以root身份登录啦。
以上就是关于进入SQL数据库提示未授权全部的内容,包括:进入SQL数据库提示未授权、数据库 授权、数据库的唯一权限是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)