# Shutting down Derby or an individual database

Applications in an embedded environment shut down the Derby system by specifying the shutdown=true attribute in the connection URL. To shut down the system, you do not specify a database name, and you do not ordinarily specify any other attribute.

    jdbc:derby:;shutdown=true

A successful shutdown always results in an SQLException to indicate that Derby has shut down and that there is no other exception.

If you have enabled Derby BUILTIN user authentication at the system level (for example, by setting the property derby.connection.requireAuthentication=true in the derby.properties file), you will need to specify credentials (that is, username and password) in order to shut down a Derby system, and the supplied username and password must also be defined at the system level.

Important: Derby's BUILTIN authentication mechanism is suitable only for development and testing purposes. It is strongly recommended that production systems rely on LDAP or a user-defined class for authentication. It is also strongly recommended that production systems protect network connections with SSL/TLS.

You can also shut down an individual database if you specify the databaseName. You can shut down the database of the current connection if you specify the default connection instead of a database name (within an SQL statement).

    // shutting down a database from your application
    DriverManager.getConnection(
        "jdbc:derby:sample;shutdown=true");

If user authentication and SQL authorization are both enabled, only the database owner can shut down the database.

    // shutting down an authenticated database as database owner
    DriverManager.getConnection(
        "jdbc:derby:securesample;user=joeowner;password=secret;shutdown=true");

Attention: It is good practice to close existing connections before shutting down the system or database. Connections created before the shutdown will not be usable after shutdown is performed. Attempting to access connections after shutdown may cause errors including instances of `NullPointerException` or protocol violations.
Parent topic: Working with the database connection URL attributes
Related concepts
Single database shutdown
Related tasks
Creating and preparing the database for read-only use
Related reference
Using the databaseName attribute