42501: INSUFFICIENT PRIVILEGE ERROR while querying in Postgresql - sql

I am trying to query a database table in postgresql, but every time I run the below query it gives me the INSUFFICIENT PRIVILEGE error. What possibly could be the reason for such permission denied error. Also, I am using pgadmin tool in windows to connect the database which is in Linux environment. Below is the query I am running
> > SELECT appid,hash
> FROM app
> WHERE appid=1;
While running the same query I am getting the below Error
ERROR: permission denied for relation app
********** Error **********
ERROR: permission denied for relation app
SQL state: 42501

The user running the query will need permissions to that table. You can grant them to that user with the GRANT statement. The below is an example that grants to PUBLIC
GRANT SELECT ON tablename TO PUBLIC;
Also I have seen SELinux cause isses and places such as here mention it. I am not exactly sure of the command to turn SELinux off but you can see if it is running by using
selinuxenabled && echo enabled || echo disabled

It simply means that you have no permission to access app table. Request your root or database administrator to grant you the permission to access app table. if your are the root or have granting privilege you can use grant command to grant your self permission to use all sql statements on table or database
For Example:
grant all privileges on database money to cashier;
before that you have to login as root or user that have granting privileges
for more details on this command refer to
http://www.postgresql.org/docs/8.1/static/sql-grant.html

If it's DB2 then go to command console of DB2, select your respective Database and select Authorities option by right click on the Database then add your respective DB2 user and grant required access.

You need to make sure that the user with which you are connecting with also has the "USAGE" access on the schema you are trying to access with the user. I have recently faced an error where I got the dump restored into a database and then had some users to whom I was only supposed to provide the read-only access. I have followed the following steps -
CREATE ROLE myapp_readonly;
GRANT CONNECT ON DATABASE {database} TO myapp_readonly;
GRANT USAGE ON SCHEMA {schema} TO myapp_readonly;
GRANT SELECT ON TABLE {schema}.{table_name} TO myapp_readonly;
GRANT myapp_readonly TO {usre};
After performing these steps when I tried to access the table, had received the following error -
SQL Error [42501]: ERROR: permission denied for schema {schema}
In my case, my users were available already and the schemas and the database were restored recently. After I have provided the "USAGE" access to the schema to the user the error was resolved.

Related

Postgres User can't connect to new database and I have granted full permission using PGADMIN

I have created a new database and I have some existing users who I want to grant full permission to access the database.
So to keep it simple I simply want to be able to connect to the database using a user name so I run the following:
GRANT CONNECT ON DATABASE my_database TO my_user;
This doesn't work I get a failed to create a connection when trying to connect, I have been into the database in pgadmin, i've given full access to everything and even made the user name a super user and still it doesn't work.
I am using a reporting tool to test the connection for the user account and all it is doing is trying to connect and it fails everytime with my users.
I have created databases for them before and it's been fine but this time it's not working.
I can access it through the main account and existing super users can access it but for some reason the none superusers can't access even when you grant them permissions.
GRANT CONNECT ON DATABASE my_database TO my_user;
GRANT USAGE ON SCHEMA my_schema TO my_user;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA my_schema TO my_user;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA my_schema TO my_user;
It looks like there is something needed for the user account, I have the users I want setup so they have "can login" privileges.
What am I doing wrong.

regarding oracle database "sysdba" user and creating a new user

I am very much new to oracle database, please forgive me for any technical errors in my question. I am using oracle 19c and I think my password for "system" user is different than the password for "sysdba". At the time of installation I used the same password every time but now while connecting to system or "\ as sysdba" , there is no problem connecting but when I type the password for "orcl_listener" or "orcl" or "sysdba" , the password is wrong . for example:
conn sysdba
Enter password:
ERROR:
ORA-01017: invalid username/password; logon denied
when I create a new connection in SQL Developer, I use a username as a system, and the password is correct.
success
when I create a new connection in SQL Developer, I use username as \ as sysdba and password is correct .success
when I create a new connection in SQL Developer, I use username as sysdba and password is correct .not success and error says Status: Failure -Test failed: ORA-01017: invalid username/password; logon denied
.I am such a new user, if possible please provide me basic details of oracle databases in the simplest ways.
Now the second problem is that after creating a new connection in SQL developer using system username as its password is working, I expanded connection and at the bottom, I right-clicked on other users and created a new user with username "hr" and here it says "ORA-65096: invalid common user or role name".when I used c## as prefix no error occurs but I don't want any c##, it means it has to be a local user but where is option to create a local user?
please help me.
To understand common users and local users you have first to understand multitenant architecture in Oracle: container database (CDB) and pluggable databases (PDB).
In multitenant architecture you can only create a local user in a PDB.
To create a local user connected with SQL*Plus as user SYS:
Check your current CDB/PDB
show con_name
List existing PDBS
show pdbs
Go to an existing PDB:
alter session set container=mypdb;
Check your current PDB
show con_name
Create a local user in the current PDB and grant some basic privileges:
create user myuser identified by "mypwd" quota unlimited on tablespace myts;
grant create session to myuser;
grant create table to myuser;
To connect directly with SQL*Plus to this PDB you must use the Oracle Net service for this PDB:
sqlplus myuser/mypwd#myhost:myport/mypdb

Trying to run Script for Oracle 11g Database as System

I just installed Oracle 11g Express and wanted to run a script, but it says I have insufficient access.
Does the system user not have superuser access from the start?
Below is a list of the commands I was trying to issue. Is there a way to make sure that my system user have sufficient privileges to run these commands ?
GRANT EXECUTE ON sys.DBMS_REPUTIL TO SYSTEM with grant option
GRANT EXECUTE ON sys.DBMS_EXTENTS TO SYSTEM with grant option

How can I create a new postgreSQL database while already inside of a database?

My postgreSQL configuration is a bit messed up, and I currently need to login to a database using the command psql -U myUsername myDbName. I only have one database that I created with that username, so I always login to that database. Is there a way that I can create a new database while within another database?
I tried the command CREATE DATABASE dbname; while within the database but that didn't work.
As stated in the comments above, the error ERROR: permission denied to create database indicates that the "Not every user has authorization to create new databases. If PostgreSQL refuses to create databases for you then the site administrator needs to grant you permission to create databases. Consult your site administrator if this occurs. If you installed PostgreSQL yourself then you should log in for the purposes of this tutorial under the user account that you started the server as." - pgDocs
Thus, in order to access the postgres admin I had to change my pg_hba.conf
from:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
to:
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
and then run the following in the command prompt:
psql -U postgres
Grant "myUsername" user permissions to create databases i.e:
ALTER ROLE myUsername CREATEROLE CREATEDB;
source: http://www.postgresql.org/docs/current/static/sql-alterrole.html

Error - The SELECT permission was denied on the object 'sysobjects', database 'mssqlsystemresource', schema 'sys'

I get the error message
Error - The SELECT permission was denied on the object 'sysobjects', database 'mssqlsystemresource', schema 'sys'.
when I try to upgrade an EPiServer-site.
The upgrade is using user and password stored in a connection string for the site.
What changes should I do in Sql Server Management Studio for this user in order to get select permission (and possibly the other permissions that will needed to perform the upgrade) for the object 'sysobjects'`?
You execute this non-query: GRANT SELECT ON sys.sysobjects TO you; where you being the username. You can only do this as the admin(usually user sa)