Changeset 65057


Ignore:
Timestamp:
Apr 15, 2015, 12:14:53 AM (9 years ago)
Author:
martinl
Message:

db.login + pg & mysql driver: support hostname and port

Location:
grass/trunk/db
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • grass/trunk/db/db.login/db.login.html

    r63231 r65057  
    11<h2>DESCRIPTION</h2>
    22
    3 <em>db.login</em> sets the user name and optionally also a password for
    4 the connection to the selected <b>database</b> through the DB <b>driver</b>.
     3<em>db.login</em> sets login parameters such an user name and
     4optionally also a password, a hostname or a port for the connection to
     5the selected <b>database</b> through the DB <b>driver</b>.
    56
    67<h2>NOTE</h2>
    78
    8 This is only related to SQL database backends
     9Options <b>host</b> and <b>port</b> are related to only SQL database
     10backends
    911like <a href="grass-pg.html">PostgreSQL</a>, <a href="grass-mysql.html">MySQL</a>
    10 or <a href="grass-odbc.html">ODBC</a>. The passwords are stored in a
    11 hidden, unencrypted file in the user account ('home' directory)
     12or <a href="grass-odbc.html">ODBC</a>.
     13
     14<p>
     15Note that the passwords are stored in a hidden, <i>unencrypted</i>
     16file in the user account ('home' directory)
    1217called <em>.grass7/dblogin</em>. Only the file owner can access this
    1318file.
     
    1520<h2>EXAMPLES</h2>
    1621
    17 Only username specified:
     22Only username specified (assuming locally accessible PostgreSQL DB
     23without password):
    1824
    1925<div class="code"><pre>
    20 db.login user=bacava
     26db.login driver=pg database=mydb
    2127</pre></div>
    2228
    2329<p>
    24 Username and password specified (note that the command
    25 lines history will store the password in this way):
     30Username, password and hostname specified (note that the command lines
     31history will store the password in this way):
    2632
    2733<div class="code"><pre>
    28 db.login user=bacava password=secret
     34db.login driver=pg database=mydb user=bacava password=secret host=db.server.com
    2935</pre></div>
    3036
    3137<p>
    32 Username and empty password specified (note that the command
    33 lines history will store the password in this way):
     38Username and empty password specified:
    3439
    3540<div class="code"><pre>
    36 db.login user=bacava password=""
     41db.login driver=pg database=mydb user=bacava password=""
    3742</pre></div>
     43
    3844
    3945<h2>SEE ALSO</h2>
     
    4147<em>
    4248<a href="db.connect.html">db.connect</a>,
    43 <a href="db.test.html">db.test</a>
     49<a href="db.test.html">db.test</a>,
     50<a href="db.tables.html">db.tables</a>
    4451</em>
    4552
     
    4956<h2>AUTHOR</h2>
    5057
    51 Radim Blazek
     58Radim Blazek<br>
     59Support for hostname and port by Martin Landa, OSGeoREL, Czech Technical University in Prague, Czech Republic (GRASS 7.1)
    5260
    5361<p>
  • grass/trunk/db/db.login/main.c

    r60472 r65057  
    77 *               Markus Neteler <neteler itc.it>
    88 * PURPOSE:      Store db login settings
    9  * COPYRIGHT:    (C) 2004-2014 by the GRASS Development Team
     9 * COPYRIGHT:    (C) 2004-2015 by the GRASS Development Team
    1010 *
    1111 *               This program is free software under the GNU General
     
    3030int main(int argc, char *argv[])
    3131{
    32     struct Option *driver, *database, *user, *password;
     32    struct Option *driver, *database, *user, *password, *host, *port;
    3333    struct Flag *print;
    3434    struct GModule *module;
     
    4141    G_add_keyword(_("connection settings"));
    4242    module->description = _("Sets user/password for DB driver/database.");
    43 
     43    module->overwrite = TRUE;
     44   
    4445    driver = G_define_standard_option(G_OPT_DB_DRIVER);
    4546    driver->options = db_list_drivers();
     
    5657    user->required = NO;
    5758    user->multiple = NO;
    58     user->description = _("Username to set for DB connection");
     59    user->description = _("Username");
    5960    user->guisection = _("Settings");
    6061   
     
    6465    password->required = NO;
    6566    password->multiple = NO;
    66     password->description = _("Password to set for DB connection");
     67    password->description = _("Password");
    6768    password->guisection = _("Settings");
     69
     70    host = G_define_option();
     71    host->key = "host";
     72    host->type = TYPE_STRING;
     73    host->required = NO;
     74    host->multiple = NO;
     75    host->label = _("Hostname");
     76    host->description = _("Relevant only for pg and mysql driver");
     77    host->guisection = _("Settings");
     78
     79    port = G_define_option();
     80    port->key = "port";
     81    port->type = TYPE_STRING;
     82    port->required = NO;
     83    port->multiple = NO;
     84    port->label = _("Port");
     85    port->description = _("Relevant only for pg and mysql driver");
     86    port->guisection = _("Settings");
    6887
    6988    print = G_define_flag();
     
    81100    }
    82101
    83     if (db_set_login(driver->answer, database->answer, user->answer,
    84                      password->answer) == DB_FAILED) {
     102    if (db_set_login2(driver->answer, database->answer, user->answer,
     103                      password->answer, host->answer, port->answer,
     104                      G_get_overwrite()) == DB_FAILED) {
    85105        G_fatal_error(_("Unable to set user/password"));
    86106    }
    87107   
    88108    if (password->answer)
    89         G_important_message(_("The password was stored in file (%s%cdblogin)"), G_config_path(), HOST_DIRSEP);
     109        G_important_message(_("The password was stored in file (%s%cdblogin)"),
     110                            G_config_path(), HOST_DIRSEP);
    90111   
    91112    exit(EXIT_SUCCESS);
  • grass/trunk/db/drivers/mysql/db.c

    r50443 r65057  
    3838    {
    3939        /* Client version */
    40         const char *user, *password;
     40        const char *user, *password, *host, *port;
    4141        CONNPAR connpar;
    4242
     
    5151                connpar.user, connpar.password);
    5252
    53         db_get_login("mysql", name, &user, &password);
     53        db_get_login2("mysql", name, &user, &password, &host, &port);
    5454
    5555        connection = mysql_init(NULL);
    56         res = mysql_real_connect(connection, connpar.host, user, password,
    57                                  connpar.dbname, connpar.port, NULL, 0);
     56        res = mysql_real_connect(connection, host, user, password,
     57                                 connpar.dbname, port, NULL, 0);
    5858
    5959        if (res == NULL) {
  • grass/trunk/db/drivers/postgres/db.c

    r53606 r65057  
    3333{
    3434    char buf[500];
    35     const char *name, *schema, *user, *password;
     35    const char *name, *schema, *user, *password, *host, *port;
    3636    dbConnection connection;
    3737    PGCONN pgconn;
     
    5757    G_debug(3,
    5858            "db_driver_open_database(): host = %s, port = %s, options = %s, tty = %s, "
    59             "dbname = %s, user = %s, password = %s, "
     59            "dbname = %s, user = %s, password = %s, host = %s, port = %s "
    6060            "schema = %s", pgconn.host, pgconn.port, pgconn.options,
    6161            pgconn.tty, pgconn.dbname, pgconn.user, pgconn.password,
     62            pgconn.host, pgconn.port,
    6263            pgconn.schema);
    6364
    64     db_get_login("pg", name, &user, &password);
    65 
    66     pg_conn = PQsetdbLogin(pgconn.host, pgconn.port, pgconn.options, pgconn.tty,
     65    db_get_login2("pg", name, &user, &password, &host, &port);
     66
     67    pg_conn = PQsetdbLogin(host, port, pgconn.options, pgconn.tty,
    6768                           pgconn.dbname, user, password);
    6869   
     
    222223{
    223224    dbString stmt;
    224     const char *template_db, *name, *user, *password;
     225    const char *template_db, *name, *user, *password, *host, *port;
    225226   
    226227    PGCONN pgconn;
     
    238239    G_debug(3,
    239240            "db_driver_create_database(): host = %s, port = %s, options = %s, tty = %s, "
    240             "dbname = %s, user = %s, password = %s, "
     241            "dbname = %s, user = %s, password = %s, host = %s, port = %s"
    241242            "schema = %s", pgconn.host, pgconn.port, pgconn.options,
    242243            pgconn.tty, pgconn.dbname, pgconn.user, pgconn.password,
     244            pgconn.host, pgconn.port,
    243245            pgconn.schema);
    244     db_get_login("pg", template_db, &user, &password);
    245    
    246     pg_conn = PQsetdbLogin(pgconn.host, pgconn.port, pgconn.options, pgconn.tty,
     246    db_get_login2("pg", template_db, &user, &password, &host, &port);
     247   
     248    pg_conn = PQsetdbLogin(host, port, pgconn.options, pgconn.tty,
    247249                           pgconn.dbname, user, password);
    248250    if (PQstatus(pg_conn) == CONNECTION_BAD) {
  • grass/trunk/db/drivers/postgres/listdb.c

    r60465 r65057  
    2020{
    2121    int i;
    22     const char *user, *passwd;
     22    const char *user, *passwd, *host, *port;
    2323    PGCONN pgconn;
    2424    PGresult *res;
     
    4343    }
    4444   
    45     G_debug(1, "db = %s, user = %s, pass = %s, host = %s, port = %s, options = %s, tty = %s",
     45    G_debug(1, "db = %s, user = %s, pass = %s, "
     46            "host = %s, port = %s, options = %s, tty = %s",
    4647            pgconn.dbname, pgconn.user, pgconn.password, pgconn.host,
    4748            pgconn.port, pgconn.options, pgconn.tty);
    4849
    49     db_get_login("pg", NULL, &user, &passwd);
     50    db_get_login2("pg", NULL, &user, &passwd, &host, &port);
    5051    G_debug(1, "user = %s, passwd = %s", user, passwd ? "xxx" : "");
    5152
    5253    if (user || passwd) {
    53         pg_conn = PQsetdbLogin(pgconn.host, pgconn.port, pgconn.options, pgconn.tty,
     54        pg_conn = PQsetdbLogin(host, port, pgconn.options, pgconn.tty,
    5455                               "template1", user, passwd);
    5556    }
    5657    else {
    5758        pg_conn =
    58             PQsetdb(pgconn.host, pgconn.port, pgconn.options, pgconn.tty,
     59            PQsetdb(host, port, pgconn.options, pgconn.tty,
    5960                    "template1");
    6061    }
Note: See TracChangeset for help on using the changeset viewer.