使用EXECUTE betway体育app:AS语句修改执行权限,存

ALTER PROCEDURE [dbo].[sp_TruncateTable] 
    @TableName varchar(200) 
    WITH EXECUTE AS SELF
AS 
BEGIN 
    --打印出当前执行上下文用户
    SELECT  nt_username, loginame 
    FROM sys.sysprocesses 
    WHERE spid = @@SPID

    SET NOCOUNT ON; 
    DECLARE @TruncateSql nvarchar(2000);
    SET @TruncateSql = 'TRUNCATE TABLE ' + @TableName 
    EXEC (@TruncateSql) 
END

权力管理,权限管理种类

原稿链接地址:

那黄金时代篇《小编的MYSQL学习心得(十三)》将会讲课MYSQL的顾客管理

在mysql数据库中,有mysql_install_db脚本开端化权限表,存款和储蓄权限的表有:

1、user表

2、db表

3、host表

4、table_priv表

5、columns_priv表

6、proc_priv表

MySQL存取调整蕴涵2个级次:

  • 阶段1:服务器检查你是或不是允许连接。
  • 阶段2:假定你能一连,服务器检查你发生的每一个伏乞。看您是或不是有充足的权限推行它。比方,假若您从数据库中三个表精选(select)行或从数据库放弃三个表,服务器鲜明你对表有select权限或对数据库有drop权限。

服务器在存取调控的多个阶段采用在mysql的数据库中的userdbhost表,在这里些授权表中字段如下:

表名称

user

db

host
范围字段 Host Host Host
  User Db Db
  Password User  
权限字段 Select_priv Select_priv Select_priv
  Insert_priv Insert_priv Insert_priv
  Update_priv Update_priv Update_priv
  Delete_priv Delete_priv Delete_priv
  Index_priv Index_priv Index_priv
  Alter_priv Alter_priv Alter_priv
  Create_priv Create_priv Create_priv
  Drop_priv Drop_priv Drop_priv
  Grant_priv Grant_priv Grant_priv
  Reload_priv    
  Shutdown_priv    
  Process_priv    
  File_priv    

对存取调节的第二等第(央求证实),借使央求涉及表,服务器能够别的参照他事他说加以考察tables_privcolumns_priv表。那些表的字段如下:

表名称 tables_priv columns_priv
范围字段 Host Host
  Db Db
  User User
 

Table_name

Table_name
    Column_name
权限字段 Table_priv Column_priv
 

Column_priv

其他字段 Timestamp

Timestamp

Grantor  

各种授权表富含限制字段和权限字段。

user表首要分为:顾客列、权限列、安全列、财富支配列

host表首要分为:顾客列、权限列

那边美中相差的是mysql.user 未有一个列是保留客商创制时间的

   有时候排查用户问题的时候,比如某个客户在某个时间说连接不上数据库,我们在user表里只能查到是否存在那个用户    但是不知道这个用户的创建时间,也就是说客户说的那个时间究竟用户是否已经创建我们是不知道的 

帐户管理

MYSQL提供许多语句用来治本顾客帐号,那几个话语能够用来回顾登陆和退出MYSQL服务器、创设客商、删除客户、密码管理、权限管理

MYSQL数据库的安全性,要求通过帐户管理来担保

报到和分离MYSQL

mysql命令的常用参数

-h:主机名或ip,暗许是localhost,最佳内定-h参数

-u:用户名

-p:密码,注意:该参数前边的字符串和-p不可能有空格

-P:端口号,默认为3306

数据库名:能够在指令最终钦定数量库名

-e:奉行SQL语句,借使钦定该参数,就要签到后推行-e后边的命令或sql语句并脱离

betway体育app 1

指令实行完之后回来book表的结构,查询再次来到之后会自行退出MYSQL


用户

CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
    [, user [IDENTIFIED BY [PASSWORD] 'password']] 

新建普通客商

CREATE USER 'jeffrey'@'localhost' identified BY 'mypass';

客户名部分为“jeffrey”,主机名默以为“%”(即对负有主机开放权限)

倘若钦命顾客登入无需密码,则可以省略identified BY部分

对此利用插件认证连接的顾客,服务器调用钦赐名称的插件,客商端必要提供验证情势所急需的凭据。

要是创制客商时要么一而再再而三服务器时,服务器找不到对应的插件,将重回叁个荒谬

identified with语法

CREATE user 'jeffrey'@'localhost' identified with my_auth_plugin;

identified with只可以在MYSQL5.5.7及以上版本选取。

identified with和identified by是排斥的,所以对三个帐户来讲只好动用贰个表达格局。

CREATE USETiggo语句的操作会被记录到服务器日志文件恐怕操作历史文件中

例如 ~/.mysql_history。那意味对这么些文件有读取权限的人,都得以读取到新扩张加顾客的公开密码

betway体育app 2

三个形式就是新建用户的时候利用password关键字

CREATE user 'tom'@'localhost' identified BY password'*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4';

SELECT password('mypass');

SELECT * FROM `mysql`.`user` WHERE `User` ='tom';

先摸清你的密码的哈希值,然后在新建客商的时候输入哈希值

那便是说在日记里面就不得不看看哈希值

betway体育app 3

betway体育app 4


使用GRANT语句创设新顾客

GRANT USE揽胜语句能够用来创建帐户,通过该语句能够在user表中增加一条新记录

比起CREATE USEMurano语句创建的新顾客,还需求运用GRANT语句授予客户权限

利用GRANT语句创制新顾客时必需有GRANT权限。

语法

GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
    ON [object_type] {tbl_name | * | *.* | db_name.*}
    TO user [IDENTIFIED BY [PASSWORD] 'password']
        [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
    [REQUIRE
        NONE |
        [{SSL| X509}]
        [CIPHER 'cipher' [AND]]
        [ISSUER 'issuer' [AND]]
        [SUBJECT 'subject']]
    [WITH with_option [with_option] ...]

动用GRANT语句成立三个新客商testUser,密码为testpwd,并予以客户对具备数据表的SELECT和UPDATE权限

GRANT SELECT ,UPDATE ON *.* TO 'testUser'@'localhost' identified BY 'testpwd'SELECT `Host` ,`User` ,`Select_priv` ,`Update_priv`  FROM mysql.user WHERE `User` ='testUser';

实施结果展现执行成功,使用SELECT语句询问客商testUser的权位

betway体育app 5

询问结果展现SELECT和UPDATE权限字段均为Y

注意:User表中的user和host字段区分抑扬顿挫写,在询问的时候要钦点精确的客户名或主机名


直接操作MYSQL客户表

不论是CREATE USE汉兰达仍旧GRANT USE奥迪Q7,在开创顾客时,实际上都是在user表中增多一条新记录。

运用INSERT语句向mysql.user表INSERT一条记下来创造二个新客商

布署的时候供给求有INSERT权限

INSERT INTO mysql.user(host,user,password,[privilegelist])
VALUES ('host','username',password('password'),privilegevaluelist)

利用INSERT成立叁个新顾客,其客户名叫customer1,主机名字为localhost,密码为customer1

INSERT INTO mysql.user(host,user,password)
VALUES ('localhost','customer1',password('customer1'))

betway体育app 6

语句推行倒闭,查看警报消息如下:

show WARNINGS ;

betway体育app 7

因为ssl_cipher那几个字段在user表中尚无概念暗许值,所以在这里间提醒错误新闻。

影响insert语句的举行,使用SELECT语句查看user表中的记录

betway体育app 8

能够看见,插入退步


剔除普通客商

运用DROP USERubicon语句删除顾客,也足以间接通过DELETE从mysql.user表中删除相应的笔录来删除客商

DROP USE福睿斯语句用于删除一个或八个MYSQL帐户。要利用DROP USE安德拉,必得具有MYSQL数据库的全局

CREATE USER 权限或DELETE权限。

去除testUser那几个客户

DROP user 'testUser'@'localhost';

betway体育app 9

betway体育app 10

能够窥见testUser这么些客商已经去除了

应用delete语句删除客商

DELETE FROM mysql.user WHERE `Host`='localhost' and `User`='testUser'

root用户修改自身的密码

修改root密码的法子有两种

1、使用mysqladmin命令在命令行指定新密码

mysqladmin -u root -p password"rootpwd"

2、修改mysql数据库的user表

UPDATE mysql.user SET `Password` =password('rootpwd') WHERE `User`='root' and `Host`='localhost'

password('')函数用来加密顾客密码。奉行update之后必要举行flush privileges语句再次加载顾客权限

3、使用SET语句修改root客户的密码

SET PASSWO牧马人D语句能够用来重新初始化其余客商的登陆密码依然自身使用的帐户密码

语法

SET PASSWORD=PASSWORD("ROOTPWD")

新密码必需用PASSWOSportageD函数加密

利用root客户登陆到mysql之后试行上边语句

SET password=password('123456')

举办之后必要接纳进行flush privileges语句也许重启MYSQL重新加载客商权限


root客户修改普通顾客密码

1、使用SET语句修改普通客商的密码

SET PASSWORD FOR 'USER'@'HOST' =PASSWORD("ROOTPWD")

2、使用update语句修改普通客户的密码

UPDATE mysql.user SET `Password` =password('rootpwd') WHERE `User`='root' and `Host`='localhost'

施行完成之后须要利用flush privileges语句或许重启MYSQL重新加载客商权限

3、使用GRANT语句修改普通客户密码

GRANT USAGE ON *.* TO 'someuser'@'%'  IDENTIFIED BY 'somepwd'

动用下边语句把testUser客户的密码改为123456

grant USAGE ON *testUser*TO 'localhost' identified BY '123456';

介怀:使用GRANT语句和MYSQLADMIN设置密码,他们均会加密密码,这种处境下,没有须求采纳PASSWOXC60D()函数


普通客户修改密码

选择SET语句修改自身的密码

SET password=password('newpassword');

譬如修改testUser这么些客商的密码,须要利用testUser那一个客户登陆到mysql,然后推行

SET password=password('123456');

root客商密码遗失的化解办法

使用--skip-grant-tables选项运行MYSQL服务

选用--skip-grant-tables选项运转MYSQL时,服务器将不加载权限判别,任何顾客都能访谈数据库

LINUX下

使用mysqld_safe来运维MYSQL服务,也得以接纳/etc/init.d/mysql命令来运维mysql

mysqld_safe --skip-grant-tables user=mysql

或者

/etc/init.d/mysql start-mysqld --skip-grant-tables

开行MYSQL服务后,即可利用root客商登陆了

Windows下

详尽能够看一下那篇小说

Windows mysql提示:1045 access denied for user 'root'@'localhost' using password yes


权限处理

MYSQL中的各类权力

对于GRANT和REVOKE语句,priv_type能够被钦定为以下任何风姿浪漫种:

权限

意义 

ALL [PRIVILEGES] 设置除GRANT OPTION之外的所有简单权限
ALTER 允许使用ALTER TABLE
ALTER ROUTINE

更改或取消已存储的子程序

CREATE

允许使用CREATE TABLE

CREATE ROUTINE

创建已存储的子程序

CREATE TEMPORARY TABLES 允许使用CREATE TEMPORARY TABLE
CREATE USER 允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。
CREATE VIEW

允许使用CREATE VIEW

DELETE 允许使用DELETE
DROP 允许使用DROP TABLE
EXECUTE 允许用户运行已存储的子程序
FILE

允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE

INDEX

允许使用CREATE INDEX和DROP INDEX

INSERT

允许使用INSERT

LOCK TABLES 允许对您拥有SELECT权限的表使用LOCK TABLES
PROCESS

允许使用SHOW FULL PROCESSLIST

REFERENCES

未被实施

RELOAD

允许使用FLUSH

REPLICATION CLIENT

允许用户询问从属服务器或主服务器的地址

REPLICATION SLAVE

用于复制型从属服务器(从主服务器中读取二进制日志事件)

SELECT

允许使用SELECT

SHOW DATABASES

SHOW DATABASES显示所有数据库

SHOW VIEW

允许使用SHOW CREATE VIEW

SHUTDOWN

允许使用mysqladmin shutdown

SUPER

允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。

UPDATE

允许使用UPDATE

USAGE “无权限”的同义词
GRANT OPTION 允许授予权限

当从旧版本的MySQL进级时,要使用EXECUTE, CREATE VIEW, SHOW VIEW, CREATE USERubicon, CREATE ROUTINE和ALTE奥迪Q5 ROUTINE权限


授权

授权便是为有个别顾客付与权限

予以的权限能够分成多个层级:

·         大局层级

大局权限适用于三个加以服务器中的全数数据库。这几个权限存款和储蓄在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只付与和注销全局权限。

·         数据库层级

数据库权限适用于三个加以数据库中的全部指标。这个权限存款和储蓄在mysql.db和mysql.host表中。GRANT ALL ONdb_name.*和REVOKE ALL ON db_name.*只授予和注销数据库权限。

·         表层级

表权限适用于一个给定表中的全体列。那些权限存款和储蓄在mysql.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只赋予和撤回表权限。

·         列层级

列权限适用于一个给定表中的单一列。这个权限存储在mysql.columns_priv表中。当使用REVOKE时,您必需钦赐与被授权列一样的列。

·         子程序层级

CREATE ROUTINE, ALTE奥迪Q7 ROUTINE, EXECUTE和GRANT权限适用于已囤积的子程序。这几个权限能够被赋予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,那个权限能够被付与为子程序层级,并积攒在mysql.procs_priv表中。

当后续指标是八个表、三个已囤积的函数或二个已囤积的长河时,object_type子句应被内定为TABLE、FUNCTION或PROCEDURE。当从旧版本的MySQL进级时,要选用本子句,您必得晋级您的授权表

采用GRANT语句创立二个新客商grantUser,密码为“grantpwd”

客户对持有的数据有询问、插入权限,并予以GRANT权限

GRANT SELECT ,INSERT ON *.*TO 'grantUser'@'localhost' identified BY '123456' WITH GRANT OPTION ;

betway体育app 11

查询显示grantUser被创制作而成功,并予以了SELECT、INSERT、GRANT权限,其对应字段值为Y

被付与GRANT权限的客商可以登入MYSQL并创制别的客户帐户,在这里处是grantUser的顾客


撤回权限

打消权限正是裁撤已经授予顾客的一点权柄。收回客户不须求的权限能够在早晚水准上保险系统的安全性。

行使REVOKE收回权限之后,客户帐户的记录将从db、host、tables_priv、columns_priv表中除去,可是客户帐号记录如故

在user表中保留。

语法

REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
    ON [object_type] {tbl_name | * | *.* | db_name.*}
    FROM user [, user] ...

REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...

行使REVOKE语句,必得怀有mysql数据库的全局CREATE权限或UPDATE权限

应用REVOKE语句撤除客商grantUser的INSERT权限

REVOKE INSERT ON *.* FROM 'grantUser'@'localhost';

betway体育app 12

能够看来grantUser顾客的INSERT权限已经被撤回了

  注意:当从旧版本的MYSQL升级时,如果要使用EXECUTE、CREATE VIEW、SHOW VIEW、CREATE USER、CREATE ROUTINE、ALTER ROUTINE

  权限,必须先升级授权表

翻开权限

SHOW GRANT语句能够展现顾客的权能音讯

语法

show grants FOR 'user'@'host';

利用SHOW GRANT语句询问客商grantUser的权杖音讯

show grants FOR 'grantUser'@'localhost';

betway体育app 13

回去结果突显了user表中的帐户音讯;接下去感到GRANT SELECT ON关键字发轫,表示顾客被予以了SELECT权限;

*.*表示SELECT权限成效于具有数据库的持有数据表;

IDENTIFIED BY 后边的为顾客加密后的密码

在这里处,只是概念了个其余顾客权限,GRANT能够显得越发详细的权能音信,包含全局级的和非全局级的权位

譬喻表层级或许列层级的权力被授予客商来讲,他们也能在结果中显得出来。


查看MYSQL里面佚名客商

借使有匿名客商,那么客商端就足以毫无密码登陆MYSQL数据库,那样就能够存在安全隐患

反省无名客商的方法

SELECT * FROM mysql.user WHERE `User`='';

betway体育app 14

假定搜索到user字段值为空的那条记下,表达存在无名客商,需求把这条记下删除

举例用无名客商登入MYSQL就可以观望客户名是空的

betway体育app 15

删除语句

DELETE FROM mysql.user WHERE `User`='';

SELECT * FROM mysql.user WHERE `User`='';

总结

正文轻便的解说了MYSQL的顾客管理和权力方面包车型客车内容,希望对我们有协理

假使我们想越来越尖锐学习MYSQL访谈调控方面的学识

能够参见那篇文章:MySQL权限的框架结构体系

主导正是两个图

1、顾客端连接央求认证阶段

betway体育app 16

2、客商端操作供给认证阶段

betway体育app 17

最末尾说一下,小编开了一个MYSQL走起的博客园,希望大家援救一下o(∩_∩)o

接待关心MYSQL官方和讯:MYSQL走起

在本人的博客的左侧栏就能看出博客园链接,大家也得以由此点击本人的博客侧面栏的腾讯网链接进去MYSQL走起今日头条o(∩_∩)o

betway体育app 18

原作链接地址: 那黄金时代篇《我的MYSQL学习心得(十三)》将会讲课MYSQL的客户管理...

直白以来都以使用的root一级管理员顾客,这一次大家来看看普通客户的增加和删除与治本

难题源于:方今有同事供给试行批量剔除语句。依照她提供的职业须求,推荐他利用“TRUNCATE TABLE”语句。但接纳该语句要求 ALTE牧马人权限,那与奉行客商的剧中人物不符。

1. 选择DROP USE奥德赛语句删除客户

DROP USE昂Cora语句与DROP DATABASE语句有些左近,若是要去除有个别客户,只须要在DROP USECRUISER后边内定要刨除的客商消息就能够

DROP USER ‘username’@’hostname’ [, ‘username’@’hostname’];

上述语法格式中的参数这里风流浪漫度看了众多遍了,就背着了,必要注意的是,删除客户时,需求必需有删除顾客的权杖。

譬喻我们删除user3

betway体育app 19

解决办法:使用EXECUTE AS语句修改实行权限。代码如下:

3、使用INSERT语句创设客商

经过后面包车型大巴教学可以预知,前面三种艺术的结果都以在user表中增添一条新的笔录,所以嘛,大家第二种格局便是间接在user表中,插入一条新的数额。

INSERT语句创设客商的语法格式如下:

INSERT INTO mysql.user (Host , User , Password , ssl_cipher , x509_issuer , x509_subject)

VALUES (‘hostname’,‘username’,PASSWORD(’password’),‘’,‘’,‘’);

上述语法格式中,mysql.user参数表示操作的表,Host , User , Password , ssl_cipher , x509_issuer , x509_subject为相应字段,PASSWO奥迪Q7D()是叁个加密函数,用于给密码加密。

亟待静心的是,使用INSERT语句创立客商时,平常只供给增添Host , User , Password 那八个字段就可以,别的的字段取其私下认可值,不过由于前边的四个字段是从未暗许值的,由此INSERT语句创设客商时,还索要为那多少个字段设置初步值。

使用INSERT语句直接在mysql.user表中开创贰个客户,客户名字为user3、密码为123456789,INSERT语句如下:

INSERT INTO mysql.user (Host , User , Password , ssl_cipher , x509_issuer , x509_subject)

VALUES ('localhost','user3',PASSWORD('123456789'),'','','');

上述语句执行成功后,能够查一向下探底视了

betway体育app 20

从实行结果来看,确实在表中增加了数额,不过这几个顾客还无法选用,因为我们的新客商是从未有过被赋予权力的,那时候要求大家手动刷新当前的权位表,或许是重启大家的MySQL,刷新权限表的口舌如下

FLUSH PRIVILEGES;

上述语句实行成功后,就足以选取user3顾客登陆MySQL数据库了。

透过打字与印刷出来的loginame能够见到,实践客商音讯已经被涂改。

创立普通客商

betway体育app 21

在创造新客商此前,能够由此SELECT语句查看mysql.user表中有哪些客商,查询结果不用看也领悟,因为大家机房的设备都以机动回复的,所以我们就唯有root二个顶级客户,别的的急需大家相濡以沫挂念创立了。

大家MySQL数据库在数不完大公司也都在用,那么它不会独有二个客户展开田间管理的,那样公司也敬敏不谢符合规律运转,那就必要成立万分数额权限不相同的客商来展开管制,那创立普通顾客的点子有二种,大家下面前蒙受那二种方式开展疏解。

 

2、权限列

user表的权力列包含Select_priv、Insert_priv、Update_priv等以priv结尾的字段,这几个字段决定了顾客的权限,个中满含查询权限、修改权限、关闭服务等权力

user表对应的权位是针对性具备数据库的,何况这一个权限列的数据类型都是ENUM,取值独有N或Y,N是这么些字段的私下认可值,表示该客商未有该权限。

本文由必威发布于必威-数据,转载请注明出处:使用EXECUTE betway体育app:AS语句修改执行权限,存

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。