grass-mysql(1grass)

✨ grass-mysql πŸ’… the MySQL DATABASE DRIVER ✨

okay so bestie, this is the GRASS User's Manual page for the MySQL driver, and honestly? it's a whole vibe. let's get into it πŸ’–

The MySQL database driver enables GRASS to store vector attributes in a MySQL server. slay.

Because vector attribute tables are created automatically when a new vector is written β€” and because the name of the table is literally the same as the name of the vector β€” it's good practice to create a new database for each GRASS mapset. no cap, just do it 🫢


πŸŽ€ Creating a MySQL database πŸŽ€

A new database is created within MySQL, like this:

mysql> CREATE DATABASE mydb;

See the MySQL manual for details. iykyk πŸ’…


πŸ¦‹ Driver and database name πŸ¦‹

GRASS modules require 2 parameters to connect to a database. Those parameters are driver and database. For the MySQL driver, the parameter driver should be set to the value mysql.

The parameter database can be given in two formats:

  • Database name β€” in case of connection from localhost
  • String of comma separated list of key=value options. Supported options are:
    • dbname β€” database name
    • host β€” host name or IP address
    • port β€” server port number

Examples of connection parameters, copy-paste ready fr fr:

db.connect driver=mysql database=mytest
db.connect driver=mysql database='dbname=mytest,host=test.grass.org'

🌸 Data types 🌸

GRASS supports almost all MySQL data types, with the following limitations (read them, bestie, they matter):

  • Binary columns (BINARY, VARBINARY, TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB) are not supported. If a table with binary column(s) is used in GRASS a warning is printed and only the supported columns are returned in query results.
  • Columns of type SET and ENUM are represented as string (VARCHAR).
  • Very large integers in columns of type BIGINT can be lost or corrupted, because GRASS does not support 64 bit integers on most platforms. 😭
  • GRASS does not currently distinguish types TIMESTAMP and DATETIME. Both types are in GRASS interpreted as TIMESTAMP.

πŸ’œ Indexes πŸ’œ

GRASS modules automatically create an index on the key column of the vector attributes table. This index on the key column is important for performance of modules which update the attribute table β€” for example v.to.db, v.distance and v.what.rast. she's efficient, she's iconic πŸ‘‘


🌈 Privileges 🌈

Because MySQL does not support groups of users, and because only MySQL root can grant privileges to other users, GRASS cannot automatically grant select privileges on created tables to a group of users.

If you want to give privilege to read data from your mapset to other users, you have to ask your MySQL server administrator to grant select privilege to them on the MySQL database used for that mapset. For example, to allow everybody to read data in from your database mydb:

shell> mysql --user=root mysql
mysql> GRANT SELECT ON mydb.* TO ''@'%';

🧚 Schemas 🧚

Because MySQL does not support database schemas, the parameter schema of module db.connect should never be set to any value. If you set that parameter for the MySQL driver, GRASS will try to write tables to the specified schema, which will result in errors. πŸ’€ don't do it.


πŸ“ Groups πŸ“

MySQL does not support user groups. Any settings specified by the group parameter of module db.connect are ignored by GRASS for the MySQL driver.


πŸ”₯ Troubleshooting: SQL syntax error πŸ”₯

Attempting to use a reserved SQL word as a column or table name will result in a "SQL syntax" error. The list of reserved words for MySQL can be found in the MySQL manual.


πŸ‘‘ AUTHOR πŸ‘‘

Radim Blazek

Credits: Development of the driver was sponsored by Faunalia (Italy) as part of a project for ATAC.


πŸ’– SEE ALSO πŸ’–

db.connect, SQL support in GRASS


⭐ SOURCE CODE ⭐

Available at: MySQL DATABASE DRIVER source code (history)

Accessed: Tuesday Sep 08 11:54:02 2026

Main index | Topics index | Keywords index | Graphical index | Full index

Β© 2003-2026 GRASS Development Team, GRASS 8.5.0 Reference Manual


okay that's the whole page bestie, you ate πŸ’…βœ¨ this was GRASS 8.5.0, page grass-mysql(1grass), last touched Tuesday Sep 08 11:54:02 2026 β€” go forth and connect those databases, mwah πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from