Skip to content

Instantly share code, notes, and snippets.

@bushidocodes
Last active May 10, 2021 08:43
Show Gist options
  • Select an option

  • Save bushidocodes/4a02f6cc865d280b10400319b128cd92 to your computer and use it in GitHub Desktop.

Select an option

Save bushidocodes/4a02f6cc865d280b10400319b128cd92 to your computer and use it in GitHub Desktop.
Installing Postgres on WSL.md
When I went through Eliot's excellent tutorial, I decided to try to push forward with the latest-and-greatest version of Postgres to troubleshoot the directions with the newer version (the 64-bit Version 9.6.1.1 x64 Windows installer).
When I ran the `psql -p 5432 -h localhost -U postgres` for the first time in BASH, I was actually able to get into the prompt using the postgres user I created during the Windows Installation wizard.
```bash
➜ ~ psql -p 5432 -h localhost -U postgres
psql (9.5.5, server 9.6.1)
WARNING: psql major version 9.5, server major version 9.6.
Some psql features might not work.
Type "help" for help.
postgres=# \q
```
One of the big changes between 9.3 and 9.6 is the upgrade of pgAdmin III to pgAdmin IV. The interface seems to have changed, and I couldn't find a way to change my localhost permissions from md5 to trust in the GUI.
As I result, I just had to manually edit the configuration file as shown in the (Ubuntu instructions)[https://learn.fullstackacademy.com/workshop/5717c9edf8d81d03002472ba/content/5717ca218c4fe5030064e166/text]
Accepting the defaults during the Windows installer, my pg_hba.conf file was located in C:\Program Files\PostgreSQL\9.6\data.
This can be edited in VIM like such:
`vim /mnt/c/Program\ Files/PostgreSQL/9.6/data/pg_hba.conf`
```
➜ ~ createuser --interactive spmcbride1201
Shall the new role be a superuser? (y/n) y
createuser: could not connect to database postgres: FATAL: role "spmcbride1201" does not exist
➜ ~ createuser --help
createuser creates a new PostgreSQL role.
Usage:
createuser [OPTION]... [ROLENAME]
Options:
-c, --connection-limit=N connection limit for role (default: no limit)
-d, --createdb role can create new databases
-D, --no-createdb role cannot create databases (default)
-e, --echo show the commands being sent to the server
-E, --encrypted encrypt stored password
-g, --role=ROLE new role will be a member of this role
-i, --inherit role inherits privileges of roles it is a
member of (default)
-I, --no-inherit role does not inherit privileges
-l, --login role can login (default)
-L, --no-login role cannot login
-N, --unencrypted do not encrypt stored password
-P, --pwprompt assign a password to new role
-r, --createrole role can create new roles
-R, --no-createrole role cannot create roles (default)
-s, --superuser role will be superuser
-S, --no-superuser role will not be superuser (default)
-V, --version output version information, then exit
--interactive prompt for missing role name and attributes rather
than using defaults
--replication role can initiate replication
--no-replication role cannot initiate replication
-?, --help show this help, then exit
Connection options:
-h, --host=HOSTNAME database server host or socket directory
-p, --port=PORT database server port
-U, --username=USERNAME user name to connect as (not the one to create)
-w, --no-password never prompt for password
-W, --password force password prompt
Report bugs to <pgsql-bugs@postgresql.org>.
```
➜ ~ sudo apg-get remove postgres
[sudo] password for spmcbride1201:
sudo: apg-get: command not found
➜ ~ sudo apt-get remove postgres
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package postgres
➜ ~ sudo apg-get uninstall postgres
sudo: apg-get: command not found
➜ ~ sudo apg-get uninstallD postgres
sudo: apg-get: command not found
➜ ~
➜ ~
➜ ~
➜ ~
➜ ~
➜ ~
➜ ~
➜ ~
➜ ~
➜ ~
➜ ~
➜ ~ postgres
zsh: command not found: postgres
➜ ~ apt-get --help
apt 1.2.12 (amd64)
Usage: apt-get [options] command
apt-get [options] install|remove pkg1 [pkg2 ...]
apt-get [options] source pkg1 [pkg2 ...]
apt-get is a command line interface for retrieval of packages
and information about them from authenticated sources and
for installation, upgrade and removal of packages together
with their dependencies.
Most used commands:
update - Retrieve new lists of packages
upgrade - Perform an upgrade
install - Install new packages (pkg is libc6 not libc6.deb)
remove - Remove packages
purge - Remove packages and config files
autoremove - Remove automatically all unused packages
dist-upgrade - Distribution upgrade, see apt-get(8)
dselect-upgrade - Follow dselect selections
build-dep - Configure build-dependencies for source packages
clean - Erase downloaded archive files
autoclean - Erase old downloaded archive files
check - Verify that there are no broken dependencies
source - Download source archives
download - Download the binary package into the current directory
changelog - Download and display the changelog for the given package
See apt-get(8) for more information about the available commands.
Configuration options and syntax is detailed in apt.conf(5).
Information about how to configure sources can be found in sources.list(5).
Package and version choices can be expressed via apt_preferences(5).
Security details are available in apt-secure(8).
This APT has Super Cow Powers.
➜ ~ find postgres
find: ‘postgres’: No such file or directory
➜ ~ whois
zsh: command not found: whois
➜ ~ which postgres
postgres not found
➜ ~ sudo apg-get uninstall postgres-9.4
sudo: apg-get: command not found
➜ ~ sudo apt-get uninstall postgres-9.4
E: Invalid operation uninstall
➜ ~ sudo apt-get remove postgres-9.4
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package postgres-9.4
E: Couldn't find any package by glob 'postgres-9.4'
E: Couldn't find any package by regex 'postgres-9.4'
➜ ~ sudo apt-get remove postgres-9.%
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package postgres-9.%
E: Couldn't find any package by glob 'postgres-9.%'
E: Couldn't find any package by regex 'postgres-9.%'
➜ ~ sudo apt-get remove postgres%
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package postgres%
➜ ~ sudo apt-get remove postgres*
zsh: no matches found: postgres*
➜ ~ sudo apt-get remove postgres
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package postgres
➜ ~ sudo apt-get remove postgresql
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
postgresql
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 59.4 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 38341 files and directories currently installed.)
Removing postgresql (9.5+173) ...
➜ ~
➜ ~
➜ ~
➜ ~
➜ ~ psql -p 5432 -h localhost -U postgres
psql (9.5.5, server 9.6.1)
WARNING: psql major version 9.5, server major version 9.6.
Some psql features might not work.
Type "help" for help.
postgres=# \quit
➜ ~ createuser --interactive spmcbride1201
Shall the new role be a superuser? (y/n) y
createuser: could not connect to database postgres: FATAL: role "spmcbride1201" does not exist
➜ ~ createuser --interactive spmcbride1201
Shall the new role be a superuser? (y/n) y
createuser: could not connect to database postgres: FATAL: role "spmcbride1201" does not exist
➜ ~ createuser --interactive spmcbride
Shall the new role be a superuser? (y/n) y
createuser: could not connect to database postgres: FATAL: role "spmcbride1201" does not exist
➜ ~ sudo -u postgres createuser owning_user
sudo: setresuid() [1000, 112, 1000] -> [-1, 0, -1]: Operation not permitted
sudo: unable to set runas group vector: Operation not permitted
sudo: PERM_ROOT: setresuid(0, -1, 0): Operation not permitted
sudo: unable to open /var/run/sudo/ts/spmcbride1201: Permission denied
[sudo] password for spmcbride1201:
^C
sudo: PERM_ROOT: setresuid(0, -1, 0): Operation not permitted
sudo: 1 incorrect password attempt
sudo: PERM_ROOT: setresuid(0, -1, 0): Operation not permitted
➜ ~
➜ ~ sudo -u postgres createuser spmcbride1201
sudo: setresuid() [1000, 112, 1000] -> [-1, 0, -1]: Operation not permitted
sudo: unable to set runas group vector: Operation not permitted
sudo: PERM_ROOT: setresuid(0, -1, 0): Operation not permitted
sudo: unable to open /var/run/sudo/ts/spmcbride1201: Permission denied
[sudo] password for spmcbride1201:
sudo: PERM_ROOT: setresuid(0, -1, 0): Operation not permitted
spmcbride1201 is not in the sudoers file. This incident will be reported.
➜ ~
➜ ~
➜ ~
➜ ~ createuser --interactive spmcbride1201
Shall the new role be a superuser? (y/n) y
createuser: creation of new role failed: ERROR: role "spmcbride1201" already exists
➜ ~ createdb spmcbride1201
➜ ~ psql
psql (9.5.5, server 9.6.1)
WARNING: psql major version 9.5, server major version 9.6.
Some psql features might not work.
Type "help" for help.
spmcbride1201=# psql
spmcbride1201-# ls
spmcbride1201-# help
spmcbride1201-# \quit
➜ ~
➜ ~
➜ ~ psql
psql (9.5.5, server 9.6.1)
WARNING: psql major version 9.5, server major version 9.6.
Some psql features might not work.
Type "help" for help.
spmcbride1201=#
spmcbride1201=#
spmcbride1201=# help
You are using psql, the command-line interface to PostgreSQL.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
spmcbride1201=# \?
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=# \?
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=#
spmcbride1201=# CREATE TABLE films ( code char(5) CONSTRAINT firstkey PRIMARY KEY, title varchar(40) NOT NULL, did integer NOT NULL, date_prod date, kind varchar(10), len
interval hour to minute );
CREATE TABLE
spmcbride1201=# \q
➜ ~
export PATH=$PATH:/mnt/c/Program\ Files/PostgreSQL/9.6/bin
@bushidocodes
Copy link
Copy Markdown
Author

createloginpgadmin4

@bushidocodes
Copy link
Copy Markdown
Author

createloginpgadmin4_2

@bushidocodes
Copy link
Copy Markdown
Author

createloginpgadmin4_3

@nmsiriban
Copy link
Copy Markdown

where can i get Eliot's tutorial?

@amankkg
Copy link
Copy Markdown

amankkg commented Apr 27, 2017

@nmsiriban not sure, but this thread might be helpful microsoft/WSL#61

@CassianoSF
Copy link
Copy Markdown

That works:
createuser --interactive myusername -p 5432 -h localhost -U postgres

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment