# SYSCS_UTIL.SYSCS_CREATE_USER system procedure

The `SYSCS_UTIL.SYSCS_CREATE_USER` system procedure adds a new user account to a database.

This procedure creates users for use with NATIVE authentication. For details about NATIVE authentication, see derby.authentication.provider and "Configuring NATIVE authentication" in the Derby Security Guide.

If NATIVE authentication is not already turned on when you call this procedure:

- The first user whose credentials are stored must be the database owner.
- Calling this procedure will turn on NATIVE authentication the next time the database is booted.
- Once you turn on NATIVE authentication with this procedure, it remains turned on permanently. There is no way to turn it off.

## Syntax

    SYSCS_UTIL.SYSCS_CREATE_USER(IN USERNAME VARCHAR(128),
    IN PASSWORD VARCHAR(32672))

No result set is returned by this procedure.

USERNAME
  A user name that is case-sensitive if you place the name string in double quotes. This user name is an authorization identifier. See "Authorization identifiers, user authentication, and user authorization" in the Derby Security Guide for more information about how these names are treated.
PASSWORD
  A case-sensitive password.

## Execute privileges

If authentication and SQL authorization are both enabled, only the database owner has execute privileges on this procedure by default. See "Configuring NATIVE authentication," "Configuring user authentication," and "Configuring user authorization" in the Derby Security Guide for more information. The database owner can grant access to other users.

## JDBC example

Create a user named FRED:

    CallableStatement cs = conn.prepareCall
    ("CALL SYSCS_UTIL.SYSCS_CREATE_USER(?, ?)");
    cs.setString(1, "fred");
    cs.setString(2, "fredpassword");
    cs.execute();
    cs.close();

Create a user named FreD:

    CallableStatement cs = conn.prepareCall
    ("CALL SYSCS_UTIL.SYSCS_CREATE_USER(?, ?)");
    cs.setString(1, "\"FreD\"");
    cs.setString(2, "fredpassword");
    cs.execute();
    cs.close();

## SQL example

Create a user named FRED:

    CALL SYSCS_UTIL.SYSCS_CREATE_USER('fred', 'fredpassword')

Create a user named FreD:

    CALL SYSCS_UTIL.SYSCS_CREATE_USER('"FreD"', 'fredpassword')

Parent topic: Built-in system procedures
Related reference
SYSCS_UTIL.SYSCS_DROP_USER system procedure
SYSCS_UTIL.SYSCS_MODIFY_PASSWORD system procedure
SYSCS_UTIL.SYSCS_RESET_PASSWORD system procedure