[GRASS-user] Connecting GRASS to a MySQL database?

Richard Chirgwin rchirgwin at ozemail.com.au
Thu Sep 23 03:20:51 EDT 2010

  On 23/09/10 5:13 PM, grass-user-request at lists.osgeo.org wrote:
> Message: 3
> Date: Wed, 22 Sep 2010 16:51:08 -0400 (EDT)
> From: PixelPusher<pixelpusher at cox.net>
> Subject: [GRASS-user] Connecting GRASS to a MySQL database?
> To:grass-user at lists.osgeo.org
> Message-ID:<cbcc5e.5f72.12b3b36ce33.Webtop.0 at cox.net>
> Content-Type: text/plain; charset=UTF-8; format=flowed; delsp=no
> Sorry for the n00bish question, but I'm confused by the GRASS on-line
> docs.
> I have a MySQL database running on my local computer. Let's say that the
> MySQL user name is TRD and he has access to a database called TRD where
> I want to store my StateBoundaries table.
> I can start the  GRASS (6.4.0) Python interface and select
> "Database->Manage Databases->Connect" from the pulldown menu. I am then
> faced with the choice of driver, where I select "mysql". But, then it
> needs the Database name. This is where I get lost. The string in the
> text field says, "$GISDBASE/$LOCATION_NAME/$MAPSET/TRD". I'm not sure
> where GRASS is getting the values that substitute for those things that
> look like script variables. I guess the "$LOCATION_NAME" and "$MAPSET"
> come from the location and mapset that I selected when GRASS started.
> But, where is "$GISDBASE" set?
> I also step through the log in process by setting the appropriate user
> name and password. I know that I can use this combination to access the
> MySQL database through its command line interface.
> The next thing I do is try to test the connection. However, this results
> in lots of errors like, "Cannot connect to MySQL, Access denied for
> user" and "ERROR: Unable to open database
> using the right username and password and not doing the variable
> substitution that I was expecting.
> Can anoyone give me some hints on how to get this thing started?
> Thanks!
> Thom

Having taught a few people how to use Grass-GIS, I can say that database 
parameters confuse a great many of them!

The parameters you see are for the default dbf driver (Grass-GIS uses 
this driver as the default for any new mapset). For MySQL, you provide 
the database location, and also login.

So where you see the $GISDBASE/$LOCATION_NAME/$MAPSET/dbf/ string, you want:
database=host=<ip address>,dbname=TRD

But you'll also have to login. Eg (command line):

db.login user=TRD password="somepassword"

(the inverted commas are needed at the command line but not using the GUI)


1. From now on, every map you make in this particular mapset will use 
the MySQL database as its default connection. Don't try to mix different 
database drivers within a mapset - you'll get a headache!

2. Database parameters are stored only within the mapset you're using. 
If you want to connect a different mapset to MySQL, you have to set its 

Richard Chirgwin

More information about the grass-user mailing list