configurar banco de dados na web

Bom Dia Pessoal, estou com problema na configuração de um sistema que desenvolvi.
4 empresas vão utilizar este sistema e cada uma em uma base de dados independente, o sistema é o mesmo para ambos.

quando eu configuro a empresa A, todas os demais sistemas são reconfigurados manualmente se o supervisor acessar um sistema e depois outro sistema.
PAra vocês entenderem, no site da empresa cada sistema fica assim:

www.sitedaempresa.com/sistemaa/
www.sitedaempresa.com/sistemab/
www.sitedaempresa.com/sistemac/
www.sitedaempresa.com/sistemad/

e cada um deles se conecta a uma base de dados diferente e existe uma pessoa que sempre vai acessar os 4 sistemas que no caso é o dono das 4 filiais.

Alguém saberia me dizer o motivo desse erro? Vejam o erro que da ao acessar um segundo sistema:

ERRO
Erro ao acessar o banco de dados
Table ‘empresaa.sistema_credito’ doesn’t exist
SelectLimit(SELECT login, nome from sistema_credito , 22, 0)

O nome da conexão é o mesmo para os 4, chamada Banco

Espero ter passado as informações necessárias.

Acho que voce deve fazer:
No login:
Pega o usuario que está se logando
Verifica se ele tem acesso ao sistema que ele está se logando
Muda a conexão em tempo de execução(nome do banco, esquema, etc)
Da acessoa as aplicações que etem direito.

Acho que a sequencia é essa.

Deixe ver se eu entendi!
Para cada sistema, melhor colocar um nome diferente para cada banco de dados? Digo, para as conexões do scriptcase?

Pessoal,

Tenho uma aplicação (única) rodando para 34 empresas diferentes (e poderíam ser infinitas, se Deus quizer), com o mesmo banco e cada empresa tem seus próprios usuários que eles mesmos criam e gerenciam, sem qualquer interferencia minha… como?

O DB que eu uso é o MySQL.

Toda tabela tem 3 campos em comum: (owner,dta,usuario)

a) owner - é o proprietário do registro;
b) dta - data em que o registro foi criado;
c) usuário - que lançou o registro.

Criei uma função no banco chamada de PermiteAcesso. Todo acesso ao banco (grid,form,etc) tem uma cláusula WHERE com essa função, cujos parâmetros são o usuário e owner do registro.

Exempo:



WHERE PermiteAcesso_serv(’[sm_global_login]’,owner) = ‘Sim’ // Assim o usuário só tem acesso aos registros do grupo que ele participa


Meu esquema de segurança envolve 8 tabelas para controlar isso:

a) Grupos
grupos_id int(11) NOT NULL AUTO_INCREMENT,
grupos_descricao varchar(200) NOT NULL,
owner int(11) NOT NULL

b) Grupos de Acesso
grupo_acesso_id int(11) NOT NULL AUTO_INCREMENT,
grupo_acesso_descricao varchar(255) NOT NULL,
grupo_acesso_status varchar(100) NOT NULL,
owner int(11) NOT NULL

c) Grupos de Aplicação
grupo_aplicacoes_id int(11) NOT NULL AUTO_INCREMENT,
grupos_id int(11) NOT NULL,
aplicacoes_id varchar(200) NOT NULL,
grupo_aplicacoes_permissao varchar(11) NOT NULL DEFAULT ‘I;A;E;C’,
owner int(11) NOT NULL

d) Perfil de Acesso
perfil_acesso_id int(11) NOT NULL AUTO_INCREMENT,
perfil_acesso_descricao varchar(255) NOT NULL,
owner int(11) NOT NULL

e) Perfil de Grupo
perfil_grupo_id int(11) NOT NULL AUTO_INCREMENT,
perfil_acesso_id int(11) NOT NULL,
grupo_acesso_id int(11) NOT NULL,
owner int(11) NOT NULL

f) Grupo de Usuários
usuarios_id int(11) NOT NULL DEFAULT ‘0’,
grupos_id int(11) NOT NULL DEFAULT ‘0’,
owner int(11) NOT NULL

g) Usuários essa tem vários campos, mas os que controlam a segurança são
usuarios_id int(11) NOT NULL AUTO_INCREMENT,
usuarios_login varchar(200) NOT NULL,
usuarios_senha varchar(200) NOT NULL DEFAULT ‘e10adc3949ba59abbe56e057f20f883e’,
grupo_acesso_id int(11) NOT NULL,
perfil_acesso_id int(11) NOT NULL,
usuarios_datacadastro datetime NOT NULL,
owner int(11) NOT NULL

h) Aplicações
aplicacoes_id varchar(200) NOT NULL,
aplicacoes_descricao varchar(200) NOT NULL,
owner int(11) NOT NULL

*********** Início da Função ****************************
DELIMITER $$

CREATE FUNCTION PermiteAcesso(_usuario varchar(255), _acesso int(11) ) RETURNS varchar(255) CHARSET latin1
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE _grupo int DEFAULT 0;
DECLARE pesquisa1 CURSOR FOR
SELECT
perfil_grupo_id
FROM
sgci.sgci_perfil_grupo as g,
sgci.sgci_perfil_acesso as a,
sgci.sgci_usuarios as u
WHERE
g.perfil_acesso_id = a.perfil_acesso_id and
a.perfil_acesso_id = u.perfil_acesso_id and
u.usuarios_login =_usuario and
g.grupo_acesso_id = _acesso;
DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000’ SET done = 1;

OPEN pesquisa1;
REPEAT
FETCH pesquisa1 INTO _grupo ;
UNTIL done END REPEAT;
CLOSE pesquisa1;

IF (_grupo > 0 ) THEN
RETURN ‘Sim’;
ELSE
RETURN ‘Nao’;
END IF;
END

*************** Fim da Função ****************

Através deste sistema, aparantemente complicado, eu crio perfis de grupos que definem qual perfil de acesso tem acesso a tal grupo de acesso.

A coisa funciona ± desse jeito… é difícil explicar em poucas palavras, mas quem quizer eu envio uma aplicação pequena como exemplo.

Forte abraço.

E mais,

Se fosse um único usuário por empresa não haveria necessidade de ter a tabela de Perfil de Acesso, mas como o número de usuários por empresa é ilimitado, ela se faz necessária.

No seu contexto, é o recomendado.

Cleyton,

Exatamente!
É preciso conhecer o contexto.

[]´s

Obrigado a todos!
Eu coloquei uma conexão com nome diferente para cada aplicativo e até agora não deu problema, por isso demorei um pouco para responder, pois estava aguardando algum problema para reabrir o tópico.