1、plugin caching_sha2_password could not be loaded

概述  

扩展存储过程是 SQL Server 实例可以动态加载和运行的
DLL。扩展存储过程是使用 SQL Server 扩展存储过程 API 编写的,可直接在 SQL
Server
实例的地址空间中运行。扩展存储过程可能会产生内存泄漏或其他降低服务器的性能及可靠性的问题。固定服务器角色
sysadmin 的成员可以使用 SQL Server
实例来注册该扩展存储过程,然后授予其他用户执行该过程的权限。扩展存储过程只能添加到
master
数据库中。有一些系统自带的扩展存储过程操作的权限非常的高,包括修改注册表和修改文件的权限,比如“xp_cmdshell”。为了保证数据库的安全需要将这部分扩展存储过程给禁用。如果你们公司需要面临ICP备案的话那么这个事情是必须要做的。

 

 

需要禁用的扩展存储过程包括:

SELECT  object_name,state from  sys.system_components_surface_area_configuration 
WHERE state=1 and object_name IN (
'xp_regdeletevalue',
'xp_regremovemultistring',
'xp_regwrite',
'xp_regaddmultistring',
'xp_regdeletekey',
'xp_enumerrorlogs',
'xp_enumgroups',
---不中视图中
'xp_loginconfig',
'xp_getfiledetails',
'xp_regenumvalues',
'sp_makewebtask',
---对应系统外围配置'xp_cmdshell'
'xp_cmdshell',
---对应系统外围配置'Ole Automation Procedures'
'Sp_OACreate',
'Sp_OADestroy',
'Sp_OAGetErrorInfo',
'Sp_OAGetProperty',
'Sp_OAMethod',
'Sp_OASetProperty',
'Sp_OAStop'
)

图片 1

    SQL提供的聚合函数有求和,最大值,最小值,平均值,计数函数等。

我在mac上用Sequel
Pro连数据库的时候,会报出以上错误,这是应为8.0.11把身份认证插件改成了 caching_sha2_password ,而客户端没法使用此插件。

一、禁用扩展存储过程

有一些扩展存储过程它是属于服务器外围配置选项,可以使用sp_configure来开启和禁用。例如xp_cmdshell

---开启xp_cmdshell
sp_configure 'show advanced options', 1;
GO
sp_configure 'allow updates',0 ---开启允许更新系统表,当更改系统配置选项时提示不运行对系统目录即时更新时需要开启改功能
go
reconfigure;
go
sp_configure 'xp_cmdshell', 1;----开启xp_cmdshell
go
reconfigure;
go
sp_configure 'allow updates',1----关闭更新系统表功能
go
sp_configure 'show advanced options', 0;

go
---关闭xp_cmdshell
sp_configure 'show advanced options', 1;
GO
sp_configure 'allow updates',0 ---开启允许更新系统表
go
reconfigure;
go
sp_configure 'xp_cmdshell', 0;----关闭xp_cmdshell
go
reconfigure;
go
sp_configure 'allow updates',1----关闭更新系统表功能
go
sp_configure 'show advanced options', 0;

聚合函数及其功能:

这是我们只要用命令行进去mysql,然后执行

二、拒绝授予扩展存储过程的可执行权限

而除了系统外围配置选项涉及的扩展存储过程可以通过sp_configure开启和禁用之外,剩下的系统扩展存储过程只能通过拒绝授予可执行权限的方式来禁用。

从SQLServer2005开始就不能通过sp_dropextendedproc 删除系统扩展存储过程

图片 2

图片 3

可以通过拒绝 public 角色对扩展存储过程的 EXECUTE 权限

select 'DENY EXECUTE ON '+object_name+' TO public',object_name,state from  sys.system_components_surface_area_configuration 
WHERE state=1 and object_name IN (
'xp_regdeletevalue',
'xp_regremovemultistring',
'xp_regwrite',
'xp_regaddmultistring',
'xp_regdeletekey',
'xp_enumerrorlogs',
'xp_enumgroups',
---不中视图中
'xp_loginconfig',
'xp_getfiledetails',
'xp_regenumvalues',
'sp_makewebtask',
---对应系统外围配置'xp_cmdshell'
'xp_cmdshell',
---对应系统外围配置'Ole Automation Procedures'
'Sp_OACreate',
'Sp_OADestroy',
'Sp_OAGetErrorInfo',
'Sp_OAGetProperty',
'Sp_OAMethod',
'Sp_OASetProperty',
'Sp_OAStop'
);

 

函数名称 函数功能
SUM() 返回选取结果集中所有值的总和
MAX() 返回选取结果集中所有值的最大值
MIN() 返回选取结果集中所有值的最小值
AVG() 返回选取结果集中所有值的平均值
COUNT() 返回选取结果集中行的数目
ALTER USER 'YOURUSERNAME'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOURPASSWORD';

三、查询权限

USE MASTER
;
WITH CET AS(
SELECT  'DENY EXECUTE ON '+object_name+' TO public' AS DenySQL,object_name,state from  sys.system_components_surface_area_configuration 
WHERE state=1 and object_name IN (
'xp_regdeletevalue',
'xp_regremovemultistring',
'xp_regwrite',
'xp_regaddmultistring',
'xp_regdeletekey',
'xp_enumerrorlogs',
'xp_enumgroups',
---不中视图中
'xp_loginconfig',
'xp_getfiledetails',
'xp_regenumvalues',
'sp_makewebtask',
---对应系统外围配置'xp_cmdshell'
'xp_cmdshell',
---对应系统外围配置'Ole Automation Procedures'
'Sp_OACreate',
'Sp_OADestroy',
'Sp_OAGetErrorInfo',
'Sp_OAGetProperty',
'Sp_OAMethod',
'Sp_OASetProperty',
'Sp_OAStop'
)
)

SELECT A.name,schema_name(A.schema_id) [schema],A.type,b.permission_name,B.type,B.state_desc,C.name,c.type_desc    
FROM sys.all_objects AS A      
LEFT JOIN sys.database_permissions AS B ON B.major_id=A.object_id AND B.minor_id=0 AND B.class=1      
LEFT JOIN sys.database_principals AS C ON C.principal_id = B.grantee_principal_id      
where A.name IN(SELECT object_name FROM CET)   
ORDER BY A.name 

图片 4

 

参考:

参考:

  学习本节所需要的两张表:

比如:

总结

 

 

 

 

 

 

备注:

    作者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接,否则保留追究责任的权利。

《欢迎交流讨论》

 

图片 5图片 6

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
CREATE TABLE TEACHER
(
    ID INT IDENTITY (1,1) PRIMARY KEY ,  --主键,自增长
    TNO INT NOT NULL, --教工号
    TNAME CHAR(10) NOT NULL, --教师姓名
    CNO INT NOT NULL, --课程号
    SAL INT, --工资
    DNAME CHAR(10) NOT NULL, --所在系
    TSEX CHAR(2) NOT NULL, --性别
    AGE INT NOT NULL --年龄
)
INSERT INTO dbo.TEACHER VALUES( 1,'王军',4,400,'数学','男',32)
INSERT INTO dbo.TEACHER VALUES( 2,'李彤',5,6600,'生物','女',54)
INSERT INTO dbo.TEACHER VALUES( 3,'王永军',1,1000,'计算机','女',45)
INSERT INTO dbo.TEACHER VALUES( 4,'刘晓婧',2,8000,'计算机','女',23)
INSERT INTO dbo.TEACHER VALUES( 5,'高维',8,6000,'电子工程','男',54)
INSERT INTO dbo.TEACHER VALUES( 6,'李伟',7,230,'机械工程','女',23)
INSERT INTO dbo.TEACHER VALUES( 7,'刘辉',3,0,'生物','女',65)
INSERT INTO dbo.TEACHER VALUES( 8,'刘伟',9,500,'计算机','男',23)
INSERT INTO dbo.TEACHER VALUES( 9,'刘静',12,0,'经济管理','男',45)
INSERT INTO dbo.TEACHER VALUES( 10,'刘奕锴',13,70000,'计算机','女',65)
INSERT INTO dbo.TEACHER VALUES( 11,'高维',14,70000,'经济管理','男',61)

CREATE TABLE COURSE
(
    ID INT IDENTITY (1,1) PRIMARY KEY ,  --主键,自增长
    CNO INT NOT NULL, --课程号
    CNAME CHAR(30) NOT NULL, --课程名称
    CTIME INT NOT NULL, --学时
    SCOUNT INT NOT NULL, --容纳人数
    CTEST SMALLDATETIME NOT NULL, --考试时间
)
INSERT INTO dbo.COURSE VALUES( 4,'应用数学基础',48,120,'2006-7-10')
INSERT INTO dbo.COURSE VALUES( 5,'生物工程概论',32,80,'2006-7-8')
INSERT INTO dbo.COURSE VALUES( 1,'计算机软件基础',32,70,'2006-7-8')
INSERT INTO dbo.COURSE VALUES( 2,'计算机硬件基础',24,80,'2006-6-28')
INSERT INTO dbo.COURSE VALUES( 8,'模拟电路设计',28,90,'2006-7-10')
INSERT INTO dbo.COURSE VALUES( 7,'机械设计实践',48,68,'2006-7-14')
INSERT INTO dbo.COURSE VALUES( 3,'生物化学',32,40,'2006-7-2')
INSERT INTO dbo.COURSE VALUES( 9,'数据库设计',16,80,'2006-7-1')
INSERT INTO dbo.COURSE VALUES( 6,'设计理论',28,45,'2006-6-30')
INSERT INTO dbo.COURSE VALUES( 10,'计算机入门',25,150,'2006-6-29')
INSERT INTO dbo.COURSE VALUES( 11,'数字电路设计基础',30,125,'2006-6-20')
INSERT INTO dbo.COURSE VALUES( 12,'数字电路设计基础%',30,125,'2006-6-20')
INSERT INTO dbo.COURSE VALUES( 13,'_设计理论',28,45,'2006-6-30')

然后重新加载下数据库配置

数据表

FLUSH PRIVILEGES;

  

这样就可以用客户端连接数据库了。

  一、求和函数——SUM()

如果你想彻底更换所有用户身份认证插件,可以修改my.cnf。在末尾增加一行

--求所有老师的工资总和
    SELECT SUM(SAL) AS TOTAL_SAL FROM dbo.TEACHER
default_authentication_plugin=mysql_native_password

  注意:

 

    SUM()函数只能作用于数值类型数据。

 

     对某列求和,如果存在NULL值,则SUM函数会忽略该值。

2、Variable ‘sql_mode’ can’t be set to the value of
‘NO_AUTO_CREATE_USER’

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注