我正在使用InterBase 2020版本。由于InterBase安装时默认用户为SYSDBA
,SYSDBA
的默认密码为masterkey
,因此我想更改SYSDBA
用户的密码。
使用gsec
工具,我可以更改密码,但当我备份数据库并将其恢复到SYSDBA
密码为masterkey
的不同机器上时,我能够成功地做到这一点。
因此,即使我更改了机器上的密码,InterBase数据库备份(更改了SYSDBA
密码(也可以在SYSDBA
密码为masterkey
的机器上恢复。这种情况下的安全措施在哪里?我如何防止这种情况发生?
嵌入式用户身份验证是防止未经授权的用户恢复数据库的解决方案吗?
您必须在数据库中激活嵌入式用户身份验证。因此,您可以使用不同的密码为每个数据库定义不同的SYSDBA。
我找到了一个解决方案。以下Delphi组件用于此:
TFDIBSecurity
TFDPhysIBDriverLink
以下Delphi代码可用于更改SYSBDA
用户密码:
FDIBSecurity1.DriverLink := FDPhysIBDriverLink1;
FDIBSecurity1.Host := '127.0.0.1';
FDIBSecurity1.UserName := 'SYSDBA';
FDIBSecurity1.Password := 'masterkey'; // Original password
FDIBSecurity1.AUserName := 'SYSDBA'; // User for which password needs to be changed
FDIBSecurity1.APassword := 'N3wPa$$w0rd'; // new password
FDIBSecurity1.ModifyUser;