My current system is Ubuntu 18.04
I installed PostgreSQL.
When I run the following command: psql -U node_user dummydb I get the following message: psql: FATAL: Peer authentication failed for user "node_user"
I currently have to access the database using this command: psql -U node_user -h localhost dummydb which works. However, It's quite tedious to enter -h localhost in every time I want to access the database.
The database is on my local machine, and only for learning purposes
Is there a way to run psql -U node_user dummydb without -h localhost and also without entering password?
You can make an alias in your .bashrc or .bash_aliases file. Simply add the following line:
myalias="psql --host= --dbname= --port=5432 --user="
Run source ~/.bashrc
Then you can simply run myalias and type in the password at the prompt, or use .pgpass to save typing in your password
Related
when i am trying to create postgres database with bash terminal on windows 11, im using below commands;
createdb 'test'
or
createdb -U postgres 'test'
and nothing happens.
i added the bin folder to paths in "environment variables" of windows. but it didnt solve the problem.
what am i doing wrong?
1st solution:
sudo su - postgres to become postgres
psql -c "create database demo" to create it from shell
2nd solution:
Just simply enter the following commands on bash:
$ createdb -U postgres(db user) dbname
If you set hba_config in pg for the access to the db in network type:
$ createdb -h YOUR_IP -U postgres(db user) dbname
Lastly, if you set password for db user, pg will ask your password to create database.
Note: If nothing works from above, double-check your system environment variables
for me I used Windows command directly, could you first try cd directly to your postgresql bin folder (I suppose createdb application must be there), then try using createdb command. If it works, there must be some wrong config with your Env variable :D (need restart, or just reopen your terminal)
I have an Azure SQL database that I am able to connect using local SSMS.
Server Name - <Server>.database.windows.net
UserName - zrana
Password - *****
The authentication mode I use is here is Active Directory - Password. Is it possible to connect to the database using the sqlcmd utility on the command line?
I am unable to connect using the following command
sqlcmd -S 910005-sql.database.windows.net -d 900046 -U zrana -P ****
There is another database that I created on Azure and tried to connect through Local SSMS.
This time the authentication method is "SQL Server password". I am able to connect to it using local SSMS and through sqlcmd using the same format mentioned above.
Is it possible to connect to an Azure SQL database using AAD? I tried using -G -I options in my command and didn't work.
This is the error I see:
(Adding an answer that is essentially the process we worked through in the comments)
Install the latest sqlcmd from https://learn.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15
run sqlcmd -? to see what version of sqlcmd is actually running - if it isn't the latest version you just downloaded, check your PATH variable etc. You can use the dos command where sqlcmd to find where the command line is searching for sqlcmd
run sqlcmd with the -G switch to specify AAD cred checking, and include your user name an dpassword with the -U and -P options. Be careful with the case of these as -u and -p are different switches entirely.
sqlcmd -S 910005-sql.database.windows.net -d 900046 -G -U zrana -P ****
When you want to use an Azure Active Directory user name and password, you need to provide the -G option and also use the user name and password by providing the -U and -P options. On the -U option please see on my example you need to provide the username#domain,
When using the -G option to connect to SQL Database or SQL Data Warehouse and authenticate using Azure Active Directory, a timeout value of at least 30 seconds is recommended. Use "-l 30". Read more about it on this documentation.
Please see the following example:
sqlcmd -S Target_DB_or_DW.testsrv.database.windows.net -G -U bob#contoso.com -P MyAADPassword -l 30
I want to use Ansible as part of another Python software. in that software I have a hosts list with their user / password.
Is there a way to pass the user / pass of the SSH connection to the Ansible ad-hoc command or write it in any file in encrypted way?
Or do i understand it all wrong, and the only way to do it is with SSH certification?
The docs say you can specify the password via the command line:
-k, --ask-pass.
ask for connection password
Ansible can also store the password in the ansible_password variable on a per-host basis.
you can use --extra-vars like this:
$ ansible all --inventory=10.0.1.2, -m ping \
--extra-vars "ansible_user=root ansible_password=yourpassword"
If you're authenticating to a Linux host that's joined to a Microsoft Active Directory domain, this command line works.
ansible --module-name ping --extra-vars 'ansible_user=domain\user ansible_password=PASSWORD' --inventory 10.10.6.184, all
As mentioned before you can use --extra-vars (-e) , but instead of specifying the pwd on the commandline so it doesn't end up in the history files you can save it to an environment variable. This way it also goes away when you close the session.
read -s PASS
ansible windows -i hosts -m win_ping -e "ansible_password=$PASS"
I used the command
ansible -i inventory example -m ping -u <your_user_name> --ask-pass
And it will ask for your password.
For anyone who gets the error:
to use the 'ssh' connection type with passwords, you must install the sshpass program
On MacOS, you can follow below instructions to install sshpass:
Download the Source Code
Extract it and cd into the directory
./configure
sudo make install
I recently moved my Ruby on Rails 4 app from Heroku to Linode. Everything has been setup correctly, but I need to populate my database with a file, lets call it movies.sql
I am not very familiar with postgresql command and VPS, so having trouble getting this done. I uploaded it to Dropbox since I saw many SO posts that you can use S3/Dropbox.
I saw different commands like this (unsure how to go about it in my situation):
psql -U postgres -d testdb -f /home/you/file.sql
psql -f file.sql dbname
psql -U username -d myDataBase -a -f myInsertFile
So which is the correct one in my situation and how to run when I SSH in Linode? Thanks
You'll need to get the file onto your server or you'll need to use a different command from your terminal.
If you have the file locally, you can restore without sshing in using the psql command:
psql -h <user#ip_address_of_server> -U <database_username> -d <name_of_the_database> -f local/path/to/your/file.sql
Otherwise, the command is:
psql -U <database_username> -d <name_of_the_database> < remote/path/to/your/file.sql
-U sets the db username, -h sets the host, -d sets the name of the database, and -f tells the command you're restoring from a file.
I am trying to automate the install of debian with postgreSQL but I'm running into issues with my script. The database import of schema.sql into the db1 doesn't seem to be working, and I'm not sure if I even created the database correctly.
This is the code I am using:
# POSTGRES
apt-get install -y postgresql
echo "CREATE ROLE deploy LOGIN ENCRYPTED PASSWORD '$APP_DB_PASS';" | sudo -u postgres psql
su postgres -c "createdb db1 --owner deploy"
su postgres -c "createdb db2 --owner deploy"
service postgresql reload
# IMPORT SQL
psql --username=postgres spider < /etc/schema.sql
When I try to see if the database is created I get the following errors and the SQL import didn't seem to work.
root#li624-168:/etc/app# psql -U root spider
psql: FATAL: role "root" does not exist
root#li624-168:/etc//app# psql -U deploy spider
psql: FATAL: Peer authentication failed for user "deploy"
Can anyone tell me please where I have gone wrong?
Firstly, make sure you check result codes when executing commands. You can abort your bash script by adding set -e at the top. If any single command fails it will stop immediately.
Secondly, take another look at the error message:
Peer authentication failed for user "deploy"
You're trying to login as "deploy" and it seems to recognize the user-name. However, your operating-system user is not called "deploy", so peer auth fails. It looks like you want to login using a password, so set up your pg_hba.conf file to allow that.
Postgres databases are owned by Linux users. So, you need to create an user in postgres tha have the same name of your Linux user. then, you have to use the new user to create your db. Example:
My linux account is razcor
sudo su postgres -c 'createuser -d -E -R -S razcor'
this creates a postgres user
sudo su razcor -c "createdb db1 --owner razcor"
this creates my db
result:
razcor#ubuntu:~$ psql -U razcor db1
psql (8.4.17)
Type "help" for help.
db1=>
In your case create a user named: root
#Richard Huxton: yes, I agree.