数据库如何用Windows验证方式登录的?

数据库如何用Windows验证方式登录的?,第1张

企业管理器-->右键你的实例(就是那个有绿色图标的)-->属性-->安全-->改为sql与window混合

连接字符串中添加:

integrated security = SSPI

即可,不需要再添加UID和password的子串。

Integrated

Security=True;表示在连接数据库进行身份验证时用windows集成的身份验证模式,TRUE可以改成SSPI表示同一个意思,如果为False的话,就会用Userid

和PW的模式进行登陆,也就是说当Integrated

Security=true;时UserID和Pw是不起作用的,只有当其设置为False时数据库才会用UserId和Pw的方式进行登录,可以设成Integrated

Security={true,False,yes,No,SSPi}这几个参数,其中TRUE=yes=SSpI。Pooling=False表示是否使用连接池,False表示不使用连接池,连接池就是有一些与数据库的连接放在里面,建立新的连接时系统会先看里面有没有一样的连接,有就不用新建了。

using System

using System.Collections.Generic

using System.Text

using System.Data

using System.Data.SqlClient

namespace SQL_work

{

class DataConn

{

public static SqlConnection My_con  //定义一个SqlConnection类型的公共变量My_con,用于判断数据库是否连接成功

public static string M_str_sqlcon = @"Data Source=计算机名/SQLEXPRESSInitial Catalog=db_work3Integrated Security=TruePooling=False"

#region  建立数据库连接

/// <summary>

/// 建立数据库连接.

/// </summary>

/// <returns>返回SqlConnection对象</returns>

public static SqlConnection getcon()

{

My_con = new SqlConnection(M_str_sqlcon)   //用SqlConnection对象与指定的数据库相连接

My_con.Open()  //打开数据库连接

return My_con  //返回SqlConnection对象的信息

}

#endregion

#region  测试数据库是否赋加

/// <summary>

/// 测试数据库是否赋加

/// </summary>

public void con_open()

{

getcon()

//con_close()

}

#endregion

#region  关闭数据库连接

/// <summary>

/// 关闭于数据库的连接.

/// </summary>

public void con_close()

{

if (My_con.State == ConnectionState.Open)   //判断是否打开与数据库的连接

{

My_con.Close()   //关闭数据库的连接

My_con.Dispose()   //释放My_con变量的所有空间

}

}

#endregion

#region  读取指定表中的信息

/// <summary>

/// 读取指定表中的信息.

/// </summary>

/// <param name="SQLstr">SQL语句</param>

/// <returns>返回bool型</returns>

public SqlDataReader getcom(string SQLstr)

{

getcon()   //打开与数据库的连接

SqlCommand My_com = My_con.CreateCommand()//创建一个SqlCommand对象,用于执行SQL语句

My_com.CommandText = SQLstr    //获取指定的SQL语句

SqlDataReader My_read = My_com.ExecuteReader()//执行SQL语名句,生成一个SqlDataReader对象

return My_read

}

#endregion

#region 执行SqlCommand命令

/// <summary>

/// 执行SqlCommand

/// </summary>

/// <param name="M_str_sqlstr">SQL语句</param>

public void getsqlcom(string SQLstr)

{

getcon()   //打开与数据库的连接

SqlCommand SQLcom = new SqlCommand(SQLstr, My_con)//创建一个SqlCommand对象,用于执行SQL语句

SQLcom.ExecuteNonQuery()   //执行SQL语句

SQLcom.Dispose()   //释放所有空间

con_close()    //调用con_close()方法,关闭与数据库的连接

}

#endregion

#region  创建DataSet对象

/// <summary>

/// 创建一个DataSet对象

/// </summary>

/// <param name="M_str_sqlstr">SQL语句</param>

/// <param name="M_str_table">表名</param>

/// <returns>返回DataSet对象</returns>

public DataSet getDataSet(string SQLstr, string tableName)

{

getcon()   //打开与数据库的连接

SqlDataAdapter SQLda = new SqlDataAdapter(SQLstr, My_con)  //创建一个SqlDataAdapter对象,并获取指定数据表的信息

DataSet My_DataSet = new DataSet()//创建DataSet对象

SQLda.Fill(My_DataSet, tableName)  //通过SqlDataAdapter对象的Fill()方法,将数据表信息添加到DataSet对象中

con_close()    //关闭数据库的连接

return My_DataSet  //返回DataSet对象的信息

//WritePrivateProfileString(string section, string key, string val, string filePath)

}

#endregion

}

}

Oracle的 *** 作系统身份认证

oraclelogin数据库远程登录authenticationos

sqlnet authentication_services=(NTS) 在$ORACLE_HOME/neork/admin/sqlnet ora中

NTS特指的是windows系统 或者设为all 这两种情况都允许 *** 作系统认证

如果在unix下如果没有设置sqlnet authentication_services 默认就是 *** 作系统认证!或者设为all也允许 *** 作系统认证

参数SQLNET AUTHENTICATION_SERVICES= (NONE NTS)表明用户连接Oracle服务器时使用哪种验证方式

NONE表示Oracle数据库身份验证 NTS表示 *** 作系统身份验证 两种方式可以并用

数据库用sysdba登录的验证有两种方式 一种是通过os认证 一种是通过密码文件验证登录方式有两种 一种是在数据库主机直接登录(用os认证的方式) 一种是通过网络远程登录需要设置的参数有两个 一个是SQLNET AUTHENTICATION_SERVICES 一个是REMOTE_LOGIN_PASSWORDFILE

os认证 如果启用了os认证 以sysdba登录 那么我们只要用oracle软件的安装用户就能登录 sqlplus / as sysdba 如果我们要禁用os认证 只利用密码文件登录 我们首先要有一个密码文件

orapwd file=C:/oracle/product/ /db_ /database/PWDoralocal ora password=maximo entries=

然后我们要把$ORACLE_HOME/neork/admin/sqlnet ora中设置

SQLNET AUTHENTICATION_SERVICES= none

注意一下 密码文件只在数据库启动的时候加载进去 一旦加载进去 密码文件就脱离了oracle管理 所以我们用orapwd新建密码文件后 里面指定的密码要在数据重启后才能生效

至此 我们已经实现不用os认证(sqlplus / as sysdba 的方式登录不了) 那么我们怎么限制网络方面利用sysdba远程登录呢?我们可以设置初始化文件中的REMOTE_LOGIN_PASSWORDFILE=none

注意 当REMOTE_LOGIN_PASSWORDFILE=none时 这个参数生效需要重启数据库 并且 一旦启用这个参数 将使用 *** 作系统认证 不使用口令文件 因此如果REMOTE_LOGIN_PASSWORDFILE=none且SQLNET AUTHENTICATION_SERVICES= none这个时候数据库是无法登录的

alter system set REMOTE_LOGIN_PASSWORDFILE=none scope=spfile

( )REMOTE_LOGIN_PASSWORDFILE=none且SQLNET AUTHENTICATION_SERVICES= none

oracle安装用户本地sqlplus / as sysdba 无法登录

非oracle安装用户本机sqlplus sys/change_on_install as sysdba 无法登录

非oracle安装用户远程sqlplus / as sysdba_on_install@sid as sysdba 无法登录

( )REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET AUTHENTICATION_SERVICES= none

oracle安装用户本地sqlplus / as sysdba 无法登录

非oracle安装用户本机sqlplus sys/change_on_install as sysdba 能登录

非oracle安装用户远程sqlplus / as sysdba_on_install@sid as sysdba 能登录

( )REMOTE_LOGIN_PASSWORDFILE=none且SQLNET AUTHENTICATION_SERVICES= (NTS)

oracle安装用户本地sqlplus / as sysdba 能登录

非oracle安装用户本机sqlplus sys/change_on_install as sysdba 无法登录

非oracle安装用户远程sqlplus / as sysdba_on_install@sid as sysdba 无法登录

( )REMOTE_LOGIN_PASSWORDFILE=exclusive且SQLNET AUTHENTICATION_SERVICES= (NTS)

oracle安装用户本地sqlplus / as sysdba 能登录

非oracle安装用户本机sqlplus sys/change_on_install as sysdba 能登录

非oracle安装用户远程sqlplus / as sysdba_on_install@sid as sysdba 能登录

Oracle REMOTE_LOGIN_PASSWORDFILE 参数

设置初始化参数 REMOTE_LOGIN_PASSWORDFILE

在 Oracle 数据库实例的初始化参数文件中 此参数控制着密码文件的使用及其状态 它可以有以下几个选项

NONE 指示 Oracle 系统不使用密码文件 特权用户的登录通过 *** 作系统进行身份验证

EXCLUSIVE 指示只有一个数据库实例可以使用此密码文件 只有在此设置下的密码文件可以包含有除 SYS 以外的用户信息 即允许将系统权限 SYSOPER /SYSDBA 授予除 SYS 以外的其他用户 此设置oracle i中为缺省值 有朋友说是shared 其实不然

SHARED 指示可有多个数据库实例可以使用此密码文件 在此设置下只有 SYS 帐号能被密码文件识别 即使文件中存有其他用户的信息 也不允许他们以 SYSOPER /SYSDBA 的权限登录

在 REMOTE_LOGIN_PASSWORDFILE 参数设置为 EXCLUSIVE SHARED 情况下 Oracle 系统搜索密码文件的次序为 在系统注册库中查找 ORA_SID_PWFILE 参数值(它为密码文件的全路径名)若未找到 则查找 ORA_PWFILE 参数值若仍未找到 则使用缺省值 ORACLE_HOME/DATABASE/PWDSID ORA 其中的 SID 代表相应的 Oracle 数据库系统标识符

总结

$ORACLE_HOME/neork/admin/sqlnet ora中的AUTHENTICATION_SERVICES参数

在windows下 SQLNET AUTHENTICATION_SERVICES必须设置为NTS或者ALL才能使用OS认证不设置或者设置为其他任何值都不能使用OS认证

在linux下 在SQLNET AUTHENTICATION_SERVICES的值设置为ALL 或者不设置的情况下 OS验证才能成功设置为其他任何值都不能使用OS认证

spfile中的REMOTE_LOGIN_PASSWORDFILE参数

值为exclusive时 远程能作为sysdba身份登录

值为none时 以sysdba身份无法登录

oracle的sys用户密码怎么修改

一 忘记除SYS SYSTEM用户之外的用户的登录密码

用SYS (或SYSTEM)用户登录: CONN SYS/PASS_WORD AS SYSDBA

使用如下语句修改用户的密码: ALTER USER user_name IDENTIFIED BY newpass

注意 密码不能全是数字 并且不能是数字开头 否则会出现 ORA : 口令缺失或无效

二 忘记SYS用户 或者是SYSTEM用户的密码

如果是忘记SYSTEM用户的密码 可以用SYS用户登录 然后用ALTER USER 命令修改密码

CONN SYS/PASS_WORD AS SYSDBA

ALTER USER SYSTEM IDENTIFIED BY newpass

如果是忘记SYS用户的密码 可以用SYSTEM用户登录 然后用ALTER USER 命令修改密码

CONN SYSTEM/PASS_WORD

ALTER USER SYSTEM IDENTIFIED BY newpass

三 如果SYS SYSTEM用户的密码都忘记或是丢失

可以使用ORAPWD EXE 工具修改密码

开始菜单 >运行 >输入 CMD 打开命令提示符窗口 输入如下命令

orapwd file=D:\oracle g\database\pwdctcsys ora password=newpass

这个命令重新生成了数据库的密码文件 密码文件的位置在ORACLE_HOME目录下的\database目录下

这个密码是修改sys用户的密码 除sys其他用户的密码不会改变

不过Oracle提供了两种验证方式 一种是OS验证 另一种密码文件验证方式 如果是第一种方式用以下方法修改密码

sqlplus /nolog

connect / as sysdba

alter user sys identified by

alter user system identified by

如果是第二种方法就用上述方式修改 也可以下方法修改密码

orapwd file=pwdxxx ora password=你设定的新密码 entries=

设定完后 重新启动服务 再次登陆就可以了

oracle g

在本机安装完Oracle以后 不记得sys用户的密码了 采用如下方法可以修改密码

打开cmd 输入sqlplus /nolog 回车输入 conn / as sysdba 输入 alter user sys identified by 新密码 注意 新密码最好以字母开头 否则可能出现错误Ora 有了这个方法后 只要自己对oracle服务器有管理员权限 不记得密码的时候就可以随意修改密码了

在命令行执行如下命令 sqlplus /@服务名 as sysdba 然后在sqlplus中alter user sys identified by 新密码

alter user system identified by 新密码

运行到C盘根目录

)输入 SET ORACLE_SID = 你的SID名称

)输入 sqlplus/nolog

)输入 connect/as sysdba

)输入 alert user sys identified by sys

)输入 alert user system identified by system

)更改完成 密码是Oracle数据库初始密码

首先 在CMD下输入SQLPLUS/NOLOG然后再在出来的界面中打入CONN/AS SYSDBA 这样就会以本地系统登录的用户为信任用户进入数据库的 *** 作 解决这个问题的方式有两种 一个是 ALTER USER (USERNAME) IDENTIFIED BY 密码 这个是可以改变USERNAME的密码 当然这个USERNAME必须已经存在的

另一种是 CREATE USER (USERNAME) IDENTIFIED BY 密码 改变用户权限的命令是 GRANT ROLES TO (USERNAME)以上 种方法都是针对ORACLE I的版本

用orapwd exe命令 可以修改命令

orapwd file= /oracle/pwdsid ora password= 这个命令是修改sys用户的密码 你把生成的文件覆盖原来的密码文件 除sys其他用户的密码不会改变

su oracle

sqlplus /nolog

conn / as sysdba

startup (如果数据库不是处于启动状态则启动)

alter user sys identified by

然后就可以使用sys用户密码登陆了

*** 作系统认证方式

conn / as sysdba

lishixinzhi/Article/program/Oracle/201311/16741


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

原文地址: http://outofmemory.cn/sjk/10875036.html

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

发表评论

登录后才能评论

评论列表(0条)

保存