我想把mysql数据库某个用户禁用掉,让这个用户无法登陆在哪设置

我想把mysql数据库某个用户禁用掉,让这个用户无法登陆在哪设置,第1张

mysql 创建一个用户 hail,密码 hail,指定一个数据库 haildb 给 hail

mysql -u root -p

password

use mysql

insert into user(host,user,password) values('localhost','hail',password('hail'))

flush privileges

create database haildb

grant all privileges on haildb.* to hail@localhost identified by 'hail'

flush privileges

如果想指定部分权限给用户

grant select,update on haildb.* to hail@localhost identified by 'hail'

flush privileges

删除用户

delete from user where user='hail' and host='localhost'

flush privileges

删除用户数据库

drop database haildb

修改指定用户密码

update user set password=password('new_password') where user='hail' and host='localhost'

flush privileges

sybase数据库的用户,包含两个层面:一个是登陆号,另一个是具体DB的用户,我们登陆时,使用的是登录号,但是这个登录号可以 *** 作哪些DB及 *** 作权限则取决于数据库用户。一般情况下,我们可以采取相同的名字来表示登录号和数据库用户。

首先创建一个登陆号:

sp_addlogin loginame, passwd

loginame 登录名

passwd 密码

全部语法(一般不用到)为:

sp_addlogin loginame, passwd [, defdb]

[, deflanguage ] [, fullname ] [, passwdexp ]

[, minpwdlen ] [, maxfailedlogins ]

然后创建用户:

sp_adduser loginame

这样创建当前数据库的用户,且用户名和登陆名是一样的。

全部语法为:

[dbname..]sp_adduser loginame [, username[, grpname]]

最后分配权限:

grant all | select,insert,delete,update

on table_name | view_name | stored_procedure_name

to username

grant all | create database,create

default,create procedure,create rule,create table,create view,set proxy,set session authorization

to username

例,假如当前DB为:DB001:

sp_addlogin 'test001','password001'

go

sp_adduser 'test001', 'user001'

go

grant create table to user001

go

创建了一个test001的登录名,之后为之创建一个当前数据库的用户,使这个登录名可以 *** 作当前数据库。之后分配了创建表的权限给user001。

这个时候你就可以使用用户名'test001'和密码'password001'登陆了,并且可以在DB001中创建表了。同时由于sp_adduser 的时候没有指定grpname参数,那么默认是public用户组,这个组里的用户默认即开通了select/delete/update/insert的权限。

如果你希望去掉一些权限,请使用revoke命令,其语法了grant完全相同,你只需要将grant换成revoke即可,例:

revoke select on address to user001

禁止user001查看address表。

在建立一个低权限数据库用户的时候,往往只希望他可以拥有对特定数据库的访问权限,对于特定数据库之外的信息,是知道的越少越好。首先,假设有一个低权限用户A、使用MSSQL自带的事件查探器进行分析可以知道,企业管理器使用如下语句获取数据库列表:select name, DATABASEPROPERTY(name, N'IsDetached'), (case when DATABASEPROPERTY(name, N'IsShutdown') is null then -1 else DATABASEPROPERTY(name, N'IsShutdown') end), DATABASEPROPERTY(name, N'IsSuspect'), DATABASEPROPERTY(name, N'IsOffline'), DATABASEPROPERTY(name, N'IsInLoad'), (case when DATABASEPROPERTY(name, N'IsInRecovery') is null then -1 else DATABASEPROPERTY(name, N'IsInRecovery') end), (case when DATABASEPROPERTY(name, N'IsNotRecovered') is null then -1 else DATABASEPROPERTY(name, N'IsNotRecovered') end), DATABASEPROPERTY(name, N'IsEmergencyMode'), DATABASEPROPERTY(name, N'IsInStandBy'), has_dbaccess(name), status, category, status2 from master.dbo.sysdatabases而查询分析器则使用如下语句获取数据库列表(执行一个存储过程)dbo.sp_MShasdbaccess这就是原因之所在了在默认情况下,数据库用户对系统数据库是拥有权限的,可以从系统数据库查询信息,所以,企业管理器通过查询master数据库来获取数据库列表的方式并不受用户所能访问的数据库的限制。而查询分析器执行的存储过程是经过权限限定后的数据库列表。那如果要禁止用户查看他没有权限访问的数据库名称,只有,,,,禁止他查询master.dbo.sysdatabases了把用户加入到master数据库的用户中去然后指派sysdatabases表的访问权限把A用户的select权限去掉只能使用查询分析器进行 *** 作了虽然有些严厉,但也是一种解决方法


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10856139.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-11
下一篇2023-05-11

发表评论

登录后才能评论

评论列表(0条)

    保存