cant create a database in DBeaver - database

im just starting using databases and I'm working with PostgreSQL using Dbeaver. When I want to create database,i need to create a new connection ,so I select PostgreSQL
in the window
then I press next and
this windows
pops up
and no matter what I write in User ,Database or Password Field it always show the same error
FATAL:role "(what I typed in the User field,for example misha)" does
not exist
Please Help.

You should create a new role named misha.
I assume you are using GUI, if so you could just right click on Login Roles menu and create a the role.
Here's the query to do it manually :
CREATE ROLE misha LOGIN UNENCRYPTED PASSWORD 'misha'
SUPERUSER
VALID UNTIL 'infinity';

Related

Is it possible to change the active user for a PostgreSQL connection?

Given a connection to the PostgreSQL database for user 'Alice', is there a statement that could be executed to switch to user 'Bob'?
Motivation: Looking to avoid having separate pools for each user (i.e. re-use a connection that was previously used by another user).
You could do set role bob;, but for that to work alice must have been granted bob. Note that a non-cooperating user could just set the role back to alice again if they wanted to.
In PgAdmin open part Login/Group roles.
Right click and in opened window enter new user, set permission and defined password.
After refresh you will see e.g. Alice in Login/Group roles.
After that open database with logged user.
Click on something like mondial/postgres#PostgresSQL (db/user#server) and choose new connection.
Chose which db wish to use and user wich will be connected on db.
After that you will have mondial/Alice#PostgresSQL

iam unable to create new DB in pgadmin4

is there a way to resolve it or any alternative option..?in this image u can view there's no create DB option
Which is the user you logged in ?
Try to log in with a user that has priviledges to create new databases.
There are 10 Login/group roles in the image you've posted,
find the one with that priviledges, and log in using that user.

Login and user is not there IN SQL Server 2017 then why in T-SQL it shows up?

Suppose I have a login metamanager\test which shows when I execute T-SQL, but it is not there when when I expand Security -> Login in SSMS.
Same with a database user.
I try to replicate but failed
use master
select * from sys.syslogins is used for login
use DB
select * from sys.sysusers is used for database user
A LOGIN and a USER are completely different objects.
A LOGIN is a server object, and appear in sys.syslogins, as you see.
A USER is a database object, and for a LOGIN to have access to a database, it needs to have a USER mapped to the LOGIN in that database. A LOGIN with no mapped logins in any databases, and without any server level roles, will be unable to access any of the database on the instance, apart from those that the public roles has in tempdb and master.
It appears, here, you need to create the user in the database, and then give it the appropriate permissions. You can create the USER with the following:
USE {YourDatabase};
GO
CREATE USER 'metamanager\test' FOR LOGIN 'metamanager\test';
You'll need to give it the appropriate permissions afterwards.
Also, after you have created the user, ensure you have refreshed your object explorer. Object explorer doesn't automatically refresh after you create an object.
Not sure if you explaining it correctly, but syslogins and server_principals are about the same. Only the difference that server_principals include "Roles".
As far as I know it is impossible to have something in syslogins, which does not exist in server_principals.

how to create new MSSQL user with all privilegs only to ONE database

I've been trying to figure out how to add a new user,
but I haven't managed to figure it out so the new user will have access to only a specific database without being able to see the whole server / users / databases.
Any help will be apperciated
thank you!
To add a new user who have access to only 1 database, you need to create a new login and add a user mapping to that login for the database you want,
to do this, open MSSQL Management Studio, on the left panel, expand your server by click on the checkbox and select security then Logins.
Then, right click on the logins box and select new login.
On the new login window, provide login name(user name) and authentication type, then there's select page tab on the left side, then select user mapping and add the database you want to that user, also remember to add object to default schema of that database.
USE Databasename ;
CREATE USER username WITH PASSWORD='passwd';
GRANT ALL ON Databasename TO username;
If you are on SQL Server 2012 and higher, Contained Databases is what you are looking for.
Making a database contained, you give it the ability to authenticate a user (not login), and the users of contained database will see nothing at the server level, no other databases will be visible to them.

Created a new database on SQL Server, can't be seen by web apps because permissions aren't set

So I created a new database on my SQL Server box and then added an ODBC entry so my ASP code knows what it is. Now I am getting this error:
Cannot open database "DB_NAME" requested by the login. The login failed.
I checked out the permissions by right clicking the db in Management Studio and checked permissions and low and behold it is empty.
I am just trying to duplicate the permissions of one of any of the other twenty or so databases sitting on the box. Is there a quick way to do this? Either way I just need to open up the lines of communication between my ASP code and my SQL Server db
Here is my connect code in ASP:
Set sqlConnection = Server.CreateObject("ADODB.CONNECTION")
sqlConnection.Open "DB_NAME"
Is there some reason to avoid using a proper connection string:-
sqlConnection.Open "Provider=sqloledb;Data Source=myServerAddress;Initial Catalog=DB_NAME;User Id=myUsername;Password=myPassword;"
On top of what John said, when you create a new database, you have to map the login (either SQL login or Windows login from Application Pool) to this database. You can use management studio to do this - open login properties and map it to the new database. Open Object Explorer, then click Security, Logins and rightclick login that is used by your application. Select Properties. Click User Mapping and add appropriate entry for your database in the grid you will see.
The other option is to run statement to create user within the database:
Use DB_NAME
go
create user [web_user] from login [web_login]
go
Another question is to see what rights have to be assigned to the user in the database. You have to check users permissions in one of the existing databases. Again in Object Explorer, click your existing database, then Security, Users and rightclick Properties of the user that you want to check. Observe information displayed on the dialog box in the General tab and check if there are any Securables assigned to the user. You have to copy these settings to the user in your new database.
HTH
Piotr
Try adding the user id and password into your connection string.

Resources