Jump to content

Problema na ligação à BD


Ricardo_P
 Share

Recommended Posts

Boas, estou com um problema no PHP.

Quando tento conectar-me à BD aparece este erro:

Warning: mysql_query() [function.mysql-query]: Access denied for user 'SYSTEM'@'localhost' (using password: NO)

config.php

<?
$hostname = "localhost";
$username = "root";
$password = "";
$dbName = "teste";

MYSQL_CONNECT($hostname, $username, $password) OR DIE("Falha na conexão à base de dados.");

@mysql_select_db("$dbName") or DIE("Impossível selecionar a base de dados.");
?>

Tive a pesquisar e este problema é comum, mas não encontrei resposta.

Link to comment
Share on other sites

Aonde é que esse programa em PHP está?

É provável que, se estiveres num servidor na internet que não aceitem uma ligação sem indicares credenciais.

Se tens acesso ao PhpMyAdmin com direitos de administrador podes criar essa conta.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

Amigo Ricardo_P

Antes de mais, é uma falha ENORME de segurança teres um user "root" sem password....

Se isto é uma base de dados de testes, ainda que vá... mas se é uma BD de produção, muda já isso...

Em segundo lugar, no MySQL, é possível definir permissões a tabelas (além de para bases de dados) para os vários users.

Então, um user pode ter acesso a uma determinada base de dados, e dentro desta, não ter permissões para uma determinada tabela... poderia ser o caso, já que o teu erro é na "mysql_query()" ou seja, ocorre quando executas a QUERY e não quando fazes a ligação.

Por fim, mas não menos importante...

Ao estabeleceres a ligação deves sempre retornar (e passar) os Handles dessa ligação, caso contrário poderás criar confusões... assim:

$Servidor = "localhost";
$Username = "bla";
$Password = "bla";
$BaseDados = "blablebli";

	$LigacaoBD = mysql_connect($Servidor, $Username, $Password) or die ("Não foi possivel establecer ligação com o MySQL neste servidor.<br>".mysql_error());
	mysql_select_db($BaseDados, $LigacaoBD) or die ("Não foi possível abrir a Base-de-Dados '".$BaseDados."'.<br>".mysql_error());

Quando não passas o Handle duma ligação, o PHP assume a ultima ligação efectuada...

Não conheço o restante código, mas pode ser que exista alguma confusão, joga pelo seguro e adiciona sempre os Handles.

Depois, deves guardar esse Handle, e usar nas Querys da seguinte forma:

$result = mysql_query($QueryText, $LigacaoBD);

Abraço.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.