Skip to main content

nine-manage-databases

Nine provides a command line tool for managing databases and database users. nine-manage-databases can be used via SSH. Currently, MySQL / MariaDB and PostgreSQL are supported.

Help

The following command lists all available options:

$ sudo nine-manage-databases -h

Database Management

nine-manage-databases is capable of listing, creating, and removing databases.

Choose the Database Type (DBMS)

If multiple database types are installed, you need to provide the DBMS with the option --database-type (or -t).

Available DBMS types:

  • mysql (MySQL / MariaDB)
  • postgresql (PostgreSQL)
$ sudo nine-manage-databases --database-type=postgresql database list

This command lists all the PostgreSQL databases created by nine-manage-databases.

Usually, there is only one DBMS installed, which makes the usage of this option obsolete.

List all databases

The following command lists all created databases:

$ sudo nine-manage-databases database list

Create a Database

$ sudo nine-manage-databases database create --user=nmd_user1 nmd_database1

This command creates a database named nmd_database1. Notice the nmd_ prefix. The prefix separates the databases created by Nine from databases managed by nine-manage-databases. The command also creates the user nmd_user1 which will automatically be granted read-write access to the database.

A secure password for the user will be generated and displayed in the command output. You can provide your own password interactively with the -p option.

If you want to create an additional database for an existing user, you can use the --database-only option for this purpose.

Delete a Database

$ sudo nine-manage-databases database drop nmd_database1

This command drops the database nmd_database1. Before deletion, a confirmation is required. To skip the confirmation, use the option --force. This will drop the database immediately.

Note that this command will also delete all the users which were created for this database.

User Management

List Users

$ sudo nine-manage-databases user list --database=nmd_database1

This command lists all users of the database nmd_database1. Without the --database option, all users are listed.

Create a User

$ sudo nine-manage-databases user create --database=nmd_database1 --read-only -p nmd_user2

You can create as many users for a database as you want. You can also omit the database (--database option), because the permissions can be granted separetely.

The above command creates the user nmd_user2, the password will be asked for interactively (option -p. You can omit the password option -p to create a random one.

This user will have read-only access to the nmd_database1 database (option --read-only). By default, users have read-write access.

Grant Database Access to User

⚠️ Note that the user grant_rights and user revoke_rights commands are only available for DBMS type 'mysql'. To manage database access for users on DBMS type 'postgresql', please contact support@nine.ch to obtain access to an admin user for your specific purpose.

One user can be granted access to multiple databases:

$ sudo nine-manage-databases user grant_rights nmd_user2 --database=nmd_database2 --read-only

nmd_user2 user has now read-only access to the database nmd_database2.

To revoke this permission, use the user revoke_rights command:

$ sudo nine-manage-databases user revoke_rights nmd_user2 --database=nmd_database2

Change a Database Users Password

$ sudo nine-manage-databases user update nmd_user1 update -p --database=nmd_database1

This command updates the password of the user nmd_user1 and asks for a new password interactively (option -p).

Delete a User

$ sudo nine-manage-databases user drop nmd_user1

This command drops the user nmd_user1.