Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior | |||
software:art-dev:drivers [2008/11/22 18:11] pedro |
software:art-dev:drivers [2008/11/25 11:24] (atual) pedro |
||
---|---|---|---|
Linha 11: | Linha 11: | ||
=====Postgre===== | =====Postgre===== | ||
- | * all databasde operations (createDB, createLayer etc) are echoing messages such as: | + | |
+ | ====Echoing Messages==== | ||
+ | all databasde operations (createDB, createLayer etc) are echoing messages such as: | ||
<code> | <code> | ||
Linha 24: | Linha 26: | ||
</code> | </code> | ||
How to remove them? | How to remove them? | ||
+ | |||
+ | ====Permissions==== | ||
+ | |||
+ | Henrique: drop user acho que vai funcionar sem problemas, | ||
+ | o conceito do addUser é que é diferente do MySQL, uma vez que é | ||
+ | necessário ter o usuário criado pelo CREATE USER antes de usar o GRAN | ||
+ | ALL, outro detalhe disto é que no GRANT ALL do pg é que ele | ||
+ | aparentemente não aceita o @'localhost', @'%', etc... | ||
+ | |||
+ | O getPermission não vai funcionar porque está vinculado à tabelas do | ||
+ | MySQL se não me engano, no pg não tem todas as informa~ções de usuario | ||
+ | que tem no MySQL, podem ser visualizadas com "SELECT * FROM pg_user". | ||
+ | |||
+ | Ontem mexi um pouco no código do aRTconn.cpp, mas ainda falta algumas coisas. | ||
+ | |||
+ | Coloquei um pouco de informação aqui: | ||
+ | http://www.leg.ufpr.br/doku.php/dicas:postgres | ||
+ | |||
+ | Henrique: Segue em anexo, uma versão DropUser e do AddPermission, não tive como | ||
+ | testar ainda. | ||
+ | <code> | ||
+ | SEXP aRTconn::DropUser(SEXP data) | ||
+ | { | ||
+ | string user = GET_STRING_ELEMENT(data, "user" ); | ||
+ | /*Drop user no postgres nao tem o '@localhost', etc.. | ||
+ | *bool remote = GET_BOOL_ELEMENT (data, "remote" ); | ||
+ | *string host = GET_STRING_ELEMENT(data, "host" );*/ | ||
+ | |||
+ | PrintSilent("Dropping user \'%s\' ... ", user.c_str()); | ||
+ | TeDatabase* db = NewTeDatabase(); | ||
+ | |||
+ | if( !db -> connect(Host, User, Password, "", Port)) | ||
+ | error("Could not connect\n"); | ||
+ | |||
+ | stringstream stream; | ||
+ | stream << "drop user " << user; | ||
+ | switch(Type) | ||
+ | { | ||
+ | case aRTmySQL: | ||
+ | if(!remote && host == "") stream << "@localhost"; | ||
+ | else if(host != "") stream << "@" << host; | ||
+ | else stream << "@\'%\'"; | ||
+ | } | ||
+ | |||
+ | stream << ";"; | ||
+ | |||
+ | string sql = StreamToChar(stream); | ||
+ | |||
+ | // cout << sql << endl; | ||
+ | |||
+ | if( !db->execute(sql) ) | ||
+ | { | ||
+ | string err = db->errorMessage(); | ||
+ | delete db; | ||
+ | error( err.c_str() ); | ||
+ | } | ||
+ | |||
+ | delete db; | ||
+ | PrintSilentYes; | ||
+ | return RNULL; | ||
+ | } | ||
+ | |||
+ | SEXP aRTconn::AddPermission(SEXP data) // only works in MySQL! | ||
+ | { | ||
+ | string user = GET_STRING_ELEMENT(data, "user" ); | ||
+ | bool remote = GET_BOOL_ELEMENT (data, "remote" ); | ||
+ | string host = GET_STRING_ELEMENT(data, "host" ); | ||
+ | string pass = GET_STRING_ELEMENT(data, "pass" ); | ||
+ | string database = GET_STRING_ELEMENT(data, "database" ); | ||
+ | string previlege = GET_STRING_ELEMENT(data, "previlege"); | ||
+ | |||
+ | PrintSilent("Adding permissions to user \'%s\' ... ", user.c_str()); | ||
+ | TeDatabase* db = NewTeDatabase(); | ||
+ | |||
+ | if( !db -> connect(Host, User, Password, "", Port)) | ||
+ | error("Could not connect\n"); | ||
+ | |||
+ | stringstream stream; | ||
+ | |||
+ | switch(Type) | ||
+ | { | ||
+ | case aRTmysql: | ||
+ | stream << "GRANT " <<previlege << " ON " << database << " TO " << user; | ||
+ | if(!remote && host == "") stream << "@localhost"; | ||
+ | else if(host != "") stream << "@" << host; | ||
+ | else stream << "@\'%\'"; | ||
+ | if(pass != "") | ||
+ | stream << " IDENTIFIED BY \'" << pass << "\'"; | ||
+ | case aRTpostgres: | ||
+ | stream << "CREATE USER " << user << ";"; | ||
+ | stream << "grant " << previlege << " ON DATABASE " << database << " TO " << user; | ||
+ | } | ||
+ | stream << ";"; | ||
+ | |||
+ | string sql = StreamToChar(stream); | ||
+ | |||
+ | // cout << sql << endl; | ||
+ | |||
+ | if( !db->execute(sql) ) | ||
+ | { | ||
+ | string err = db->errorMessage(); | ||
+ | delete db; | ||
+ | error( err.c_str() ); | ||
+ | } | ||
+ | |||
+ | delete db; | ||
+ | PrintSilentYes; | ||
+ | return RNULL; | ||
+ | }</code> |