Обсуждение: How to made available for a database an already installed language on another database ?
How to made available for a database an already installed language on another database ?
От
Richard Bayet
Дата:
Here's the trick: I had to do a PostgreSQL install as a unix user. That's mine the postmaster process is ran under my login name, and all the database files belong to me. And so, my login name under this system was added (i presume when i launched initdb) in pg_user as a PostgreSQL superuser. I could therefore create my own database, access it, and add plpgsql language support with createlang on my database. I hadn't made any single change to pg_hba.conf, so the "trust" method was prevailing. Now here's the trick: I decided to allow people having their own database on my server. To do so, I create for them a database, and a password file for this database. In pg_hba.conf, I now use the "password passwordfile" authentification method. And the problem is that they can't add any language support with createlang. Anytime they tried (for example '$>createlang plpgsql theirdb'), the program seemed to "freeze" on authentification ... They got a : $> createlang plpgsql theirdb Password: THEIRPASS Password: THEIRPASS Password: THEIRPASS I don't think it was an authentification problem because whenever they (or I) put a wrong password, they (or I) got a "Password authentification failed for user 'them'" ... I added myself to the "theirdb" password file, and things got weirder and weirder: now my shell hanged up, and I had to kill. I changed authentification method for "theirdb" to "trust", and tried again. And now i get this: $>createlang plpgsql theirdb createlang: A function named 'plpgsql_call_handler' already exists. Installation aborted. I tried to figure it out by myself, reading the docs for hours but pfffrrrtt, could'nt get anything valuable. I read that only database superusers can add language support for a database, but eh, aren't I one since i have the usesuper attribute to TRUE in pg_user (template1 database) ? Due to the error report described a few lines above (about the handler that already exists), I'm not sure managing to give a user the superuser status would help in any way ... Thanks for any piece of help ...