Giter Site home page Giter Site logo

[PATCH] A handy conninfo output about usql HOT 2 CLOSED

mapperr avatar mapperr commented on May 20, 2024
[PATCH] A handy conninfo output

from usql.

Comments (2)

kenshaw avatar kenshaw commented on May 20, 2024 1

To answer your other inquiry, there are two forms of the \connect (alias \c) ccommand:

Connection
  \c DSN                               connect to database url
  \c DRIVER PARAMS...                  connect to database with driver and parameters
  \Z                                   close database connection
  \password [USERNAME]                 change the password for a user
  \conninfo                            display information about the current database connection

Specifically, you can bypass usql's internal connection URL parsing (dburl) and just pass whatever DSN connection you want:

(not connected)=> \c postgres user=postgres password=P4ssw0rd host=localhost
Connected with driver postgres (PostgreSQL 16.0 (Debian 16.0-1.pgdg120+1))
pg:=> \conninfo
Connected with driver postgres (user=postgres password=P4ssw0rd host=localhost)
pg:=>  

You will need to research each underlying database drivers to figure out what the actual DSN would look like, as its different for each. For example, here's what a connection to MySQL looks like:

my:root@localhost=> \c my://root:P4ssw0rd@localhost
Connected with driver mysql (11.1.2-MariaDB-1:11.1.2+maria~ubu2204)
my:root@localhost=> \conninfo
Connected with driver mysql (root:P4ssw0rd@tcp(localhost:3306)/?loc=Local&parseTime=true&sql_mode=ansi)

Note however, that usql mutates some database connection strings when using the URL form, in order to add the proper connection settings necessary to make the driver behave/be more compatible with usql, such as the parseTime, and sql_mode parameters injected to the MySQL DSN. Note also that this is not an actual standard URL. You could copy/paste this and then connect with different parameters directly:

my:root@localhost=> \c mysql root:P4ssw0rd@tcp(localhost:3306)/
Connected with driver mysql (11.1.2-MariaDB-1:11.1.2+maria~ubu2204)
my:=> \conninfo
Connected with driver mysql (root:P4ssw0rd@tcp(localhost:3306)/)

For the most part, I would recommend using the URL form wherever possible, as it's much easier to read.

from usql.

kenshaw avatar kenshaw commented on May 20, 2024

We purposefully do not display the full connection string during the connection, as usql is likely to be used in automated scripts where the password (or other sensitive connection details) would be captured by logging. If you need the full connection string after-the-fact, there is the \conninfo command:

$ usql
Type "help" for help.

(not connected)=> \c postgres://postgres:P4ssw0rd@localhost/
Connected with driver postgres (PostgreSQL 16.0 (Debian 16.0-1.pgdg120+1))
pg:postgres@localhost=> \conninfo
Connected with driver postgres (host=localhost password=P4ssw0rd user=postgres)
pg:postgres@localhost=>  

from usql.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.