How to execute sql script for PostgreSQL database hosted on AWS? - sql

I am trying to run an sql file for a database hosted on AWS RDS. The command I am using is the following:
psql -v user=myusername -v dbname=postgres -v passwd=mypassword -f ./explorerpg.sql
After running it I get the following result:
sql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
What am I missing? For those curious I am trying to get Hyperledger explorer to display the database contents of an AWS blockchain. The sql script is from Hyperledger explorer.
Any suggestions are greatly appreciated!

You're missing the -h (or --host) option. The command you're running is trying to connect to a PostgreSQL server on your localhost. Additionally, you're trying too hard with the command line. You want something more like:
psql -U myusername -d postgres -h dbhostname.randomcharacters.us-west-2.rds.amazonaws.com -v passwd=mypassword -f ./explorerpg.sql
The password likely should not be done this way - a file containing the password is more common. But the key is to find the hostname of your RDS server and specify it with the -h option.

Related

Remote SQL Server

I am using Microsoft SQL Server on my mac through a docker container. I currently have a database on my local host. I want to share it with another computer/user so that they can get access to the DBMS and use C#. They are getting a error something like 'the server is not found or accessible'.
How can i make the database remote?
search for my.conf file in container.
whereis mysql
change bind address value:
bind-address 0.0.0.0
Then try to connect remotely:
mysql -h <host-name> -P <port> -u <user-name> -p

Impala Connection error

I am trying to run the below impala command in my cloudera cluster
impala-shell -i connect 10.223.121.11:21000 -d prod_db -f /home/cloudera/views/a.hql
but I get error as
Error, could not parse arguments "10.223.121.11:21000"
Could some one help me on this?
Flag -i should be defined as: -i hostname or --impalad=hostname (without connect)
command connect should be used within impala-shell Connecting to impalad through impala-shell
The default port of 21000 is assumed unless you provide another value.
So this should works:
impala-shell --impalad=10.223.121.11 -d prod_db -f /home/cloudera/views/a.hql
In own scenario, I was connected with the impala-shell but suddenly I got [Not connected] > . Trying to reconnect failed & I didn't want to restart my machine (which is another option).
And Trying this:
[Not connected] > CONNECT myhostname
did not help either
I realized that my IP did change.
By just adjusting my IP from dynamic to static fixed it.

mysqldump ask for password even thou given on commandline/config-file

I am in the process of migrating my MySQL installation to Amazon RDS and they run MySQL Server version 5.6.12.
I got the client tools of version 5.6.13 and trying to use mysqldump for automated backups.
I always get the question to enter password which block my scripting of backups.
I looks like this:
ubuntu#ip-10-48-203-112:~$ mysqldump --user=dbadmin -pmysecretpassword -h someserver.eu-west-1.rds.amazonaws.com -p skygd > dump.sql
Warning: Using a password on the command line interface can be insecure.
Enter password:
I have tried with a configuration file .my.cnf
[client]
user=dbadmin
password=mysecretpassword
And it is picked up ok, if I run:
mysqldump would have been started with the following arguments: --port=3306 --socket=/var/run/mysqld/mysqld.sock --quick --quote-names --max_allowed_packet=16M --user=dbadmin --password=mysecretpassword
But still same question about enter password.
Are there a bug in 5.6.13 that doesn't allow automated login with password?
mysqldump --user=dbadmin --password=mysecretpassword -h someserver.eu-west-1.rds.amazonaws.com skygd > dump.sql
you typed -p at the end of the line
It is a better option to mention mysql password at the end of the first command.
mysqldump -uUsername -p"space-here"Databasename -h"space-here" Hostname >xyz.sql
And for database import use
mysql -uUsername -p"space-here"Databasename -h"space-here"Hostname

How do you access an Amazon RDS instance from a chromebook?

I have accepted the "Chromebook challenge." So far, I have successfully ssh'ed into my new Google Compute Engine from ChromeOS's built in ssh terminal. But now I am faced with the task of connecting to an Amazon RDS (relational database service) instance that a consulting client has set up for me. I have found no tutorials how to do this. I don't know if I should be ssh'ing into the RDS, or what.
Has anyone else done this successfully?
Aha, so there is no way of ssh-ing to an RDS instance directly (Chromebook or otherwise), as Fredrick mentioned.
That said, I have accomplished all I needed by ssh-ing from my Chromebook into my Google Compute Engine, and then hopping from there to my RDS instance, using the standard:
me#myserver$mysql -h myrdsinstanceaddress -P 3306 -u root -p
So, the crux is that you have to ssh into some other server, and then work from there.
From the aws documentation.
Type the following command at a command prompt to connect to a DB instance using the MySQL utility. For the -h parameter, substitute the DNS name for your DB instance. For the -P parameter, substitute the port for your DB instance. Enter the master user password when prompted.
PROMPT> mysql -h myinstance.123456789012.us-east-1.rds.amazonaws.com -P 3306 -u mymasteruser -p

Import a local SQL File To MySQL on a Remote Server Using SSH Tunnel

I have a connection between my localhost and a remote server using putty SSH tunnel.
Thats fine.
Now I need a command to get the sql file on my local machine i.e. c:\folder\test.sql and import it into mysql on the remote server
I thought maybe...
mysql -u prefix_username -p testpass -h localhost -P 3307 prefix_testdb
then do a command like
mysql -p testpass -u prefix_username prefix_testdb < c:\folder\test.sql
this command did not work.
How can I acheive this?
You should run this command
mysql -h host -u user_name -pPassword database < file.sql > output.log
file.sql contains the sql queries to run and output.log makes sense only when you have a query that returns something (like a select)
The only thing different I can see in your code is the blank space between the -p option and the password. If you use the -p option, you must write the password without leaving any blank space. Or you just can user the option --password=Password
I hope you can solve the problem
You will need to ssh to the remote machine with the mysql command appended:
ssh remote_user#remote_server mysql -p testpass -u username testdb < c:\folder\test.sql
1. mysql -h xxx -uxxx -pxxx . //login to the remote mysql
2. use DATABASE. //assign which db to import
3. source path/to/file.sql //the path can be your local sql file path.
Reference: Import SQL file into mysql
Use 'scp' to copy and mysql to insert to you local machine.
Syntax:
scp remote_user#remove_server:/path/to/sql/file.sql ~/path/to/local/directory
after you transfered the file use:
mysql -uYouUserName -p name_of_database_to_import_to < ~/path/to/local/directory/file.sql
mysql {mydbname} --host {server}.mysql.database.azure.com --user {login} --password={password} < ./{localdbbackupfile}.sql
As managed services, DevOps, and CI/CD workflows have become more popular by this point, most providers of those managed services want to remove the human error part of getting the connection strings correct. If you happen to be using Azure, AWS, GCP, etc, There usually is a page or terminal command that shows you these strings to help you easily integrate. Don't forget to check their docs if you're using something like that. They are auto generated, so they are most likely 'best practice' with spot-on correct syntax for the db version you may be using.
The above command is from "connection strings" on the product details page of my Azure Managed Mysql DB Server instance.
Not necessarily asked, but an fyi, a lot of those services auto generate templates for use in a lot of common connection scenarios:
{
"connectionStrings": {
"ado.net": "Server={server}.mysql.database.azure.com; Port=3306; Database=mytestdb; Uid={login}; Pwd={password};",
"jdbc": "jdbc:mysql://{server}.mysql.database.azure.com:3306/mytestdb?user={login}&password={password}",
"jdbc Spring": "spring.datasource.url=jdbc:mysql://{server}.mysql.database.azure.com:3306/mytestdb spring.datasource.username={login} spring.datasource.password={password}",
"mysql_cmd": "mysql mytestdb --host {server}.mysql.database.azure.com --user {login} --password={password}",
"node.js": "var conn = mysql.createConnection({host: '{server}.mysql.database.azure.com', user: '{login}', password: {password}, database: mytestdb, port: 3306});",
"php": "$con=mysqli_init(); [mysqli_ssl_set($con, NULL, NULL, {ca-cert filename}, NULL, NULL);] mysqli_real_connect($con, '{server}.mysql.database.azure.com', '{login}', '{password}', 'mytestdb', 3306);",
"python": "cnx = mysql.connector.connect(user='{login}', password='{password}', host='{server}.mysql.database.azure.com', port=3306, database='mytestdb')",
"ruby": "client = Mysql2::Client.new(username: '{login}', password: '{password}', database: 'mytestdb', host: '{server}.mysql.database.azure.com', port: 3306)"
}
}
You can use pscp to upload file to the server. Go to your command line and type this
pscp.exe c:\folder\test.sql usernameoftheserver#websitename.com:/serverpath