?? usermanager.pas
字號(hào):
unit usermanager;
// -------------------------------------
// HeidiSQL
// Usermanager
// -------------------------------------
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, CheckLst, ImgList, ExtCtrls, Registry, ZDataset;
// winsock
type
TUserManagerForm = class(TForm)
PageControl1: TPageControl;
TabSheetAddUser: TTabSheet;
DBUserTree: TTreeView;
EditUser: TEdit;
EditPassword: TEdit;
EditHost: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
CheckListBoxPrivileges: TCheckListBox;
CheckBoxAllPrivileges: TCheckBox;
Label8: TLabel;
CheckBoxWithGrant: TCheckBox;
Label9: TLabel;
ImageList1: TImageList;
Bevel1: TBevel;
CheckBoxCreateAccount: TCheckBox;
EditDescription: TEdit;
Label1: TLabel;
TabSheetEditUsers: TTabSheet;
Panel1: TPanel;
CheckListBoxPrivs: TCheckListBox;
Label13: TLabel;
LabelColumn: TLabel;
LabelTable: TLabel;
LabelDB: TLabel;
Label12: TLabel;
Label11: TLabel;
LabelPrivileges: TLabel;
Panel2: TPanel;
Label2: TLabel;
TreeViewUsers: TTreeView;
ButtonSelectAll: TButton;
ButtonSelectNone: TButton;
ButtonSet: TButton;
LabelPleaseSelect: TLabel;
LabelNoPrivs: TLabel;
ButtonSelectPrivileges: TButton;
Panel3: TPanel;
ButtonClose: TButton;
ButtonAddUser: TButton;
LabelUser: TLabel;
ButtonRevoke: TButton;
Panel4: TPanel;
ButtonEditUser: TButton;
Button1: TButton;
procedure ButtonCloseClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure CheckBoxAllPrivilegesClick(Sender: TObject);
procedure ButtonAddUserClick(Sender: TObject);
procedure CheckBoxCreateAccountClick(Sender: TObject);
procedure TreeViewUsersDblClick(Sender: TObject);
procedure TreeViewUsersChange(Sender: TObject; Node: TTreeNode);
procedure PageControl1Change(Sender: TObject);
procedure ButtonSelectAllClick(Sender: TObject);
procedure ButtonSelectNoneClick(Sender: TObject);
procedure ShowPrivilegesControls(v,w,y: Boolean);
procedure ButtonSelectPrivilegesClick(Sender: TObject);
procedure ShowPrivs(node: TTreeNode);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ButtonSetClick(Sender: TObject);
procedure CheckListBoxPrivsClickCheck(Sender: TObject);
procedure ButtonRevokeClick(Sender: TObject);
procedure ButtonEditUserClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure GetResUsers;
procedure GetResDBs;
procedure GetResTables;
procedure GetResColumns;
private
{ Private declarations }
editcurrent : Boolean;
public
{ Public declarations }
User, Host : String; // Remember for setting privileges
ZQueryDBs, ZQueryTables, ZQueryColumns, ZQueryUsers, ZQueryF : TZReadOnlyQuery;
end;
var
UserManagerForm: TUserManagerForm;
implementation
uses
main, childwin, helpers, edituser;
const
crlf = #13#10;
{$R *.DFM}
procedure TUserManagerForm.ButtonCloseClick(Sender: TObject);
begin
close;
end;
procedure TUserManagerForm.FormShow(Sender: TObject);
var
i,j : Integer;
tntop, tn1, tn2, tnu1, tnu2, tnu3 : TTreeNode;
// wsadat : WSAData;
// host : String;
// ph : PHostEnt;
begin
Screen.Cursor := crHourglass;
DBUserTree.Items.Clear;
TreeViewUsers.Items.Clear;
ShowPrivilegesControls(false, true, false);
tnu1 := DBUserTree.Items.Add(nil, 'Global Access');
tnu1.ImageIndex := 13;
tnu1.SelectedIndex := 6;
with TMDIChild(Application.Mainform.ActiveMDIChild) do
begin
DBUserTree.Images := ImageList1;
tntop := tnodehost; // tnodehost on childwin
tn1 := tntop.GetFirstChild;
for i:=0 to tntop.Count-1 do
begin
tnu2 := DBUserTree.Items.AddChild(tnu1, tn1.Text);
tnu2.ImageIndex := 12;
tnu2.SelectedIndex := 0;
for j:=0 to tn1.Count-1 do
begin
tn2 := tntop.Item[i].Item[j];
tnu3 := DBUserTree.Items.AddChild(tnu2, tn1.Text + '.' + tn2.Text);
tnu3.ImageIndex := 1;
tnu3.SelectedIndex := 11;
end;
tn1 := tntop.getNextChild(tn1);
TreeViewUsers.Images := ImageList1;
end;
EditUser.Text := ZConn.User;
end;
tnu1.Expand(false);
tnu1.Selected := true;
with CheckListBoxPrivileges do
for i:=0 to 8 do
Checked[i] := true;
PageControl1.OnChange(self);
{
// get users hostname
WSAStartup(MAKEWORD(1, 1), wsadat);
gethostname(pchar(host), 80);
ph := gethostbyname(pchar(host));
EditHost.Text := ph.h_name;
WSACleanup();
}
ZQueryDBs := TZReadOnlyQuery.Create(self);
ZQueryDBs.Connection := TMDIChild(Application.Mainform.ActiveMDIChild).ZConn;
ZQueryTables := TZReadOnlyQuery.Create(self);
ZQueryTables.Connection := TMDIChild(Application.Mainform.ActiveMDIChild).ZConn;
ZQueryColumns := TZReadOnlyQuery.Create(self);
ZQueryColumns.Connection := TMDIChild(Application.Mainform.ActiveMDIChild).ZConn;
ZQueryUsers := TZReadOnlyQuery.Create(self);
ZQueryUsers.Connection := TMDIChild(Application.Mainform.ActiveMDIChild).ZConn;
ZQueryF := TZReadOnlyQuery.Create(self);
ZQueryF.Connection := TMDIChild(Application.Mainform.ActiveMDIChild).ZConn;
Screen.Cursor := crDefault;
end;
procedure TUserManagerForm.CheckBoxAllPrivilegesClick(Sender: TObject);
begin
CheckListBoxPrivileges.Enabled := not CheckBoxAllPrivileges.Checked;
end;
procedure TUserManagerForm.ButtonAddUserClick(Sender: TObject);
var
i : Integer;
priv, query, access, fromhost, pass, grant : String;
begin
// Account
if CheckBoxCreateAccount.Checked then
with TRegistry.Create do
begin
OpenKey(regpath + '\Servers\', false);
if KeyExists(EditDescription.Text) then
begin
MessageDlg('This Description (' + EditDescription.Text + ') is already used.' + crlf + 'Please specify another description!', mtError, [mbOK], 0);
EditDescription.SetFocus;
exit;
end
else with TRegistry.Create do
begin
OpenKey(regpath + '\Servers\' + EditDescription.Text, true);
WriteString('Host', TMDIChild(Application.Mainform.ActiveMDIChild).ZConn.HostName);
WriteString('User', EditUser.Text);
WriteString('Password', encrypt(EditPassword.Text));
WriteString('Port', IntToStr(TMDIChild(Application.Mainform.ActiveMDIChild).ZConn.Port));
WriteString('Timeout', '30');
WriteBool('Compressed', false);
WriteString('OnlyDBs', '');
CloseKey;
end;
end;
priv := '';
if CheckBoxAllPrivileges.Checked then
priv := 'ALL PRIVILEGES'
else
with CheckListBoxPrivileges do
for i:=0 to Items.Count - 1 do
if Checked[i] then
begin
if priv <> '' then
priv := priv + ', ';
priv := priv + Items[i];
end;
if priv = '' then
priv := 'USAGE';
case DBUserTree.Selected.Level of
0 : access := '*.*';
1 : access := DBUserTree.Selected.Text + '.*';
2 : access := DBUserTree.Selected.Text;
end;
if EditHost.Text = '' then
fromhost := '%'
else
fromhost := EditHost.Text;
if EditPassWord.Text <> '' then
pass := ' IDENTIFIED BY ''' + EditPassWord.Text + '''';
if CheckBoxWithGrant.Checked then
grant := ' WITH GRANT OPTION';
query := 'GRANT ' + priv + ' ON ' + access + ' TO ''' + EditUser.Text + '''@''' + fromhost + '''' + pass + grant;
TMDIChild(Application.Mainform.ActiveMDIChild).ExecQuery(query);
TMDIChild(Application.Mainform.ActiveMDIChild).ExecQuery('FLUSH PRIVILEGES');
ShowMessage('User succesfully created.');
end;
procedure TUserManagerForm.CheckBoxCreateAccountClick(Sender: TObject);
begin
Label1.Enabled := CheckBoxCreateAccount.Checked;
EditDescription.Enabled := CheckBoxCreateAccount.Checked;
if (CheckBoxCreateAccount.Checked) and (EditDescription.Text = '') then
begin
EditDescription.Text := TMDIChild(Application.Mainform.ActiveMDIChild).Caption;
EditDescription.SetFocus;
end;
end;
procedure TUserManagerForm.TreeViewUsersDblClick(Sender: TObject);
var
tnu, tndb, tntbl : TTreeNode;
i : Integer;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -