Skip to content

Commit

Permalink
docs(mkdocs): update the documentation site
Browse files Browse the repository at this point in the history
  • Loading branch information
danvergara committed Jan 6, 2025
1 parent 912d68f commit eabc249
Show file tree
Hide file tree
Showing 12 changed files with 157 additions and 34 deletions.
Binary file modified assets/tutorials/images/constraints-result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/tutorials/images/full-ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/tutorials/images/indexes-result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/tutorials/images/left-menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/tutorials/images/rows-result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/tutorials/images/structure-result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/tutorials/images/tab-menu.png
Binary file not shown.
13 changes: 7 additions & 6 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,14 @@ Cross-platform, zero dependencies, terminal based UI application for your Data B

## Overview

**dblab** is a fast and lightweight interactive terminal based UI application for PostgreSQL, MySQL and SQLite3, written in Go and works on OSX, Linux and Windows machines.

The main idea behind using Go for backend development is to utilize the ability of the compiler to produce zero-dependency binaries for multiple platforms.
dblab was created as an attempt to build a very simple and portable application to interact with local or remote PostgreSQL/MySQL/SQLite3 databases.
dblab is a fast and lightweight interactive terminal based UI application for PostgreSQL, MySQL and SQLite3,
written in Go and works on OSX, Linux and Windows machines. Main idea behind using Go for backend development
is to utilize ability of the compiler to produce zero-dependency binaries for
multiple platforms. dblab was created as an attempt to build very simple and portable
application to work with local or remote PostgreSQL/MySQL/SQLite3/Oracle/SQL Server databases.

The key features are:

## Features

* Cross-platform support OSX/Linux/Windows 32/64-bit
* Simple installation (distributed as a single binary)
Expand Down
2 changes: 1 addition & 1 deletion docs/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

You can start the app without passing flags or parameters, so then an interactive command prompt will ask for the connection details.

![Alt Text](https://raw.githubusercontent.com/danvergara/dblab/main/screenshots/dblab-default-form.gif){ width="500" : .center }
![Alt Text](https://raw.githubusercontent.com/danvergara/dblab/main/screenshots/dblab-demo.gif){ width="500" : .center }

Otherwise, you can explicitly include the connection details using multiple parameters:

Expand Down
2 changes: 0 additions & 2 deletions docs/tutorials/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,3 @@ If everything went well you should see the UI
![dblab](https://raw.githubusercontent.com/danvergara/dblab/main/assets/tutorials/images/full-ui.png){ width="700" : .center }
For further knowledge on the navigation of the UI you can check this [first steps in navigation](https://dblab.danvergara.com/tutorials/navigation/)
4 changes: 0 additions & 4 deletions docs/tutorials/navigation.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
One of the main features of dblab is to be a simple but very useful UI to interact with your database.
![dblab](https://raw.githubusercontent.com/danvergara/dblab/main/assets/tutorials/images/full-ui.png){ width="700" : .center }

In the top right you can find a tab menu were you can navigate through the different panels using:

![dblab](https://raw.githubusercontent.com/danvergara/dblab/main/assets/tutorials/images/tab-menu.png){ width="500" : .center }

- <kbd>Ctrl+I</kbd> to move from Rows to Indexes and backwards.
- <kbd>Ctrl+F</kbd> to move from Rows to Constraints and backwards.
- <kbd>Ctrl+S</kbd> to move from Rows to Structure and backwards.
Expand Down
170 changes: 149 additions & 21 deletions docs/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,25 +21,52 @@ $ dblab [command]

### Flags

| Flag | Type | Description |
|:----------------:|:-----------:|:----------------------------------------------------------------------------------------------------------------------------------|
| `--cfg-name` | `string` | Database config name section |
| `--config` | | Get the connection data from a config file (default is $HOME/.dblab.yaml or the current directory) |
| `--db` | `string` | Database name |
| `--driver` | `string` | Database driver |
| `-h, --help` | | help for dblab |
| `--host` | `string` | Server host name or IP |
| `--limit` | `int` | Size of the result set from the table content query (should be greater than zero, otherwise the app will error out) (default 100) |
| `--pass` | `string` | Password for user |
| `--port` | `string` | Server port |
| `--schema` | `string` | Database schema (postgres only) |
| `--socket` | `string ` | Path to a Unix socket file |
| `--ssl` | `string` | SSL mode |
| `-u, --url` | `string` | Database connection string |
| `--user` | `string` | Database user |

Use `dblab [command] --help` for more information about a command.

```
dblab is a terminal UI based interactive database client for Postgres, MySQL and SQLite3.
Usage:
dblab [flags]
dblab [command]
Available Commands:
help Help about any command
version The version of the project
Flags:
--cfg-name string Database config name section
--config Get the connection data from a config file (default locations are: current directory, $HOME/.dblab.yaml or $XDG_CONFIG_HOME/.dblab.yaml)
--db string Database name (optional)
--driver string Database driver
--encrypt string [strict|disable|false|true] data sent between client and server is encrypted or not
-h, --help help for dblab
--host string Server host name or IP
--limit uint Size of the result set from the table content query (should be greater than zero, otherwise the app will error out) (default 100)
--pass string Password for user
--port string Server port
--schema string Database schema (postgres only)
--socket string Path to a Unix socket file
--ssh-host string SSH Server Hostname/IP
--ssh-key string File with private key for SSH authentication
--ssh-key-pass string Supports connections with protected private keys with passphrase
--ssh-pass string SSH Password (Empty string for no password)
--ssh-port string SSH Port
--ssh-user string SSH User
--ssl string SSL mode
--ssl-verify string [enable|disable] or [true|false] enable ssl verify for the server
--sslcert string This parameter specifies the file name of the client SSL certificate, replacing the default ~/.postgresql/postgresql.crt
--sslkey string This parameter specifies the location for the secret key used for the client certificate. It can either specify a file name that will be used instead of the default ~/.postgresql/postgresql.key, or it can specify a key obtained from an external “engine”
--sslpassword string This parameter specifies the password for the secret key specified in sslkey
--sslrootcert string This parameter specifies the name of a file containing SSL certificate authority (CA) certificate(s) The default is ~/.postgresql/root.crt
--timeout string in seconds (default is 0 for no timeout), set to 0 for no timeout. Recommended to set to 0 and use context to manage query and connection timeouts
--trace-file string File name for trace log
--trust-server-certificate string [false|true] server certificate is checked or not
-u, --url string Database connection string
--user string Database user
-v, --version version for dblab
--wallet string Path for auto-login oracle wallet
Use "dblab [command] --help" for more information about a command.
```

## Navigation

Expand Down Expand Up @@ -89,7 +116,7 @@ Key | Description

You can start the app without passing flags or parameters, so then an interactive command prompt will ask for the connection details.

![Alt Text](https://raw.githubusercontent.com/danvergara/dblab/main/screenshots/dblab-default-form.gif){ width="500" : .center }
![Alt Text](https://raw.githubusercontent.com/danvergara/dblab/main/screenshots/dblab-demo.gif){ width="500" : .center }

Otherwise, you can explicitly include the connection details using multiple parameters:

Expand All @@ -99,6 +126,12 @@ dblab --host localhost --user myuser --db users --pass password --ssl disable --
```{ .sh .copy }
dblab --db path/to/file.sqlite3 --driver sqlite
```
```{ .sh .copy }
dblab --host localhost --user system --db FREEPDB1 --pass password --port 1521 --driver oracle --limit 50
```
```{ .sh .copy }
dblab --host localhost --user SA --db msdb --pass '5@klkbN#ABC' --port 1433 --driver sqlserver --limit 50
```

Connection URL scheme is also supported:

Expand All @@ -111,6 +144,12 @@ dblab --url mysql://user:password@tcp(host:port)/db
```{ .sh .copy }
dblab --url file:test.db?cache=shared&mode=memory
```
```{ .sh .copy }
dblab --url 'oracle://user:password@localhost:1521/db'
```
```{ .sh .copy }
dblab --url 'sqlserver://SA:myStrong(!)Password@localhost:1433?database=tempdb&encrypt=true&trustservercertificate=false&connection+timeout=30'
```

if you're using PostgreSQL, you have the option to define the schema you want to work with, the default value is `public`.

Expand All @@ -130,12 +169,72 @@ dblab --url "mysql://user:password@unix(/path/to/socket/mysql.sock)/dbname?chars
dblab --socket /path/to/socket/mysql.sock --user user --db dbname --pass password --ssl disable --port 5432 --driver mysql --limit 50
```

Postgres connection through Unix sockets:

```sh
$ dblab --url "postgres://user:password@/dbname?host=/path/to/socket"
$ dblab --socket /path/to/socket --user user --db dbname --pass password --ssl disable --port 5432 --driver postgres --limit 50
```

Now, it is possible to ensure SSL connections with `PostgreSQL` databases. SSL related parameters has been added, such as `--sslcert`, `--sslkey`, `--sslpassword`, `--sslrootcert`. More information on how to use such connection flags can be found [here](https://www.postgresql.org/docs/current/libpq-connect.html).

```{ .sh .copy }
dblab --host db-postgresql-nyc3-56456-do-user-foo-0.fake.db.ondigitalocean.com --user myuser --db users --pass password --schema myschema --port 5432 --driver postgres --limit 50 --ssl require --sslrootcert ~/Downloads/foo.crt
```

### SSH Tunnel

Now, it's possible to connect to Postgres or MySQL (more to come later) databases on a server via SSH using password or a ssh key files.

To do so, 6 new flags has been added to the dblab command:

| Flag | Description |
|----------------------|-------------------------------------------------------------------|
| --ssh-host | SSH Server Hostname/IP |
| --ssh-port | SSH Port |
| --ssh-user | SSH User |
| --ssh-pass | SSH Password (Empty string for no password) |
| --ssh-key | File with private key for SSH authentication |
| --ssh-key-pass | Passphrase for protected private key files |

#### Examples

Postgres connection via ssh tunnel using password:

```{ .sh .copy }
dblab --host localhost --user postgres --pass password --schema public --ssl disable --port 5432 --driver postgres --limit 50 --ssh-host example.com --ssh-port 22 --ssh-user root --ssh-pass root
```

Postgres connection via ssh tunnel using ssh private key file:

```{ .sh .copy }
dblab --host localhost --user postgres --pass password --schema public --ssl disable --port 5432 --driver postgres --limit 50 --ssh-host example.com --ssh-port 22 --ssh-user root --ssh-key my_ssh_key --ssh-key-pass password
```

Postgres connection using the url parameter via ssh tunnel using password:

```{ .sh .copy }
dblab --url postgres://postgres:password@localhost:5432/users?sslmode=disable --schema public --ssh-host example.com --ssh-port 22 --ssh-user root --ssh-pass root
```

MySQL connection via ssh tunnel using password:

```{ .sh .copy }
dblab --host localhost --user myuser --db mydb --pass 5@klkbN#ABC --ssl enable --port 3306 --driver mysql --limit 50 --ssh-host example.com --ssh-port 22 --ssh-user root --ssh-pass root
```

MySQL connection via ssh tunnel using ssh private key file:

```{ .sh .copy }
dblab --host localhost --user postgres --pass password --ssl enable --port 3306 --driver mysql --limit 50 --ssh-host example.com --ssh-port 22 --ssh-user root --ssh-key my_ssh_key --ssh-key-pass passphrase
```

MySQL connection using the url parameter via ssh tunnel using password:

```{ .sh .copy }
dblab --url "mysql://myuser:5@klkbN#ABC@mysql+tcp(localhost:3306)/mydb" --driver mysql --ssh-host example.com --ssh-port 22 --ssh-user root --ssh-pass root
```

### Configuration

Entering the parameters and flags every time you want to use it is tedious,
Expand Down Expand Up @@ -186,6 +285,35 @@ database:
driver: "postgres"
ssl: "require"
sslrootcert: "~/.postgresql/root.crt."
- name: "oracle"
host: "localhost"
port: 1521
db: "FREEPDB1 "
password: "password"
user: "system"
driver: "oracle"
ssl: "enable"
wallet: "path/to/wallet"
ssl-verify: true
- name: "sqlserver"
driver: "sqlserver"
host: "localhost"
port: 1433
db: "msdb"
password: "5@klkbN#ABC"
user: "SA"
- name: "ssh-tunnel"
host: "localhost"
port: 5432
db: "users"
password: "password"
user: "postgres"
schema: "public"
driver: "postgres"
ssh-host: "example.com"
ssh-port: 22
ssh-user: "ssh-user"
ssh-pass: "password"
# should be greater than 0, otherwise the app will error out
limit: 50
```
Expand All @@ -199,4 +327,4 @@ database:
driver: "sqlite"
```

Only the `host` and `ssl` fields are optionals. `127.0.0.1` and `disable`, respectively.
only the `host` and `ssl` fields are optionals. `127.0.0.1` and `disable`, respectively.

0 comments on commit eabc249

Please sign in to comment.