创建用户

The 创建用户 statement may be used to add a new user to a NuoDB database. 与此同时,使用此SQL语句,您必须指定初始密码,或将用户帐户与外部身份验证系统相关联。

句法

CREATE 用R 用户名 PASSWORD 'password'
CREATE 用R 用户名 EXTERNAL
用户名

这是用户帐户的名称。 通常,用户名应该是一个字符串。 如果给出的用户名不是字符串,或者它会没有’t有一个资格的前缀,必须在双引号之间输入(“用户名“),反响(`用户名`)或方括号([用户名])。 顺便提及,使用引号,反馈或用户名的括号不保留这种情况。 无论您输入的内容如何,​​所有字母都将被转换并以大写字母存储。

用户名允许哪些字符的限制,以及不允许的名称。 指定Nuodb标识符名称的规则,也适用于用户名(参见 指定Nuodb标识符名称的规则)。

password

这是用户’s initial password. 它必须在单引号内给出。 所有用户必须分配密码,除非您’ve included the EXTERNAL option. 在这种情况下,密码将在外部系统(即,LDAP)中给出。

EXTERNAL

此选项允许您从外接LDAP服务器定义和认证的帐户创建NOODB用户。 No password is given when using this option with the 创建用户 statement.

Creating a user with the EXTERNAL option will cause an entry to be added to the system tables SYSTEM.USERSSYSTEM.PASSWORDS. Were you to look at the SYSTEM.PASSWORDS table, you would see that the FLAGS field indicates whether or not a user is authenticated by NuoDB or by an external LDAP server (see 用户系统表说明密码系统表说明)。

描述

为了保护数据库和数据,NuodB要求每个用户,每个客户端连接都提供用户名和密码。 To create NuoDB users, you would use the SQL statement, 创建用户. 执行此操作时,对于用户名,您可以给出任何将由NOODB或将使用LDAP服务器进行身份验证的名称。

使用外部身份验证将允许您最大限度地减少管理职责,因为用户将使用其现有帐户访问Nuodb数据库。 请记住,如果用户已经存在于NOODB,则赢得了’T能够创建具有相同名称的外部用户。 这样做可能会导致冲突,特别是如果NOODB用户是除了LDAP用户之外的人。

With the 创建用户 statement, in addition to creating a user, you also specify the user’s initial password. The password can be changed later by using the 改变用户 statement (see 改变用户)。

创建用户帐户仅提供对数据库的用户访问权限。 It doesn’给他们任何特权;他们不’T有能力插入或删除数据,也不能够看到数据。 Privileges for an entire database, as well as specific tables, can be granted to a user with the 授予 statement (see 授予)。

它而不是直接授予用户权限’建议您创建 角色 该权限被授予那些角色—​not users. 然后,您可以将这些角色授予多个用户。 You do this—​创建角色并授予角色的权限并将角色分配给用户—​with the 授予 statement. This method of using roles, in lieu of granting privileges directly to users, is easier to maintain (e.g., all users in the Sales Department are granted a role you might call, sales_dept, which has privileges that allows access to a table you might call, sales_orders)。

To revoke roles or privileges from users, you would use the 撤销 statement (see 撤销)。 Should you decide to remove a user, use the 删除用户 statement (see 删除用户)。

必须授予DBA的创建用户权限,以使其能够创建用户。

例子

Below are some examples of how the 创建用户 statement might be deployed. 这些示例说明了一些可能性,上述一些偏差。

CREATE 用R winston_colridge
PASSWORD 'Evoke_Poltroon_379_Vitalism';

/* When logged in as winston_colridge */
选择 CURRENT_USER FROM dual;
   CURRENT_USER
 ----------------
  WINSTON_COLRIDGE

In this example, notice that although the user name was entered with all lower-case letters, the results of the 选择 statement using the CURRENT_USER( ) function shows that the user name was converted and stored in all upper-case letters. 登录时,用户可以使用用于用户名的大写或小写字母。

请注意,初始密码很长。 密码最多可达128个字符。 密码还包含特殊字符(即,三个下划线),以及数字。 虽然用户名不区分大小写,但密码区分大小写。 Let’S请参阅如何在命令行中给出此用户帐户的用户名和密码以登录SQL客户端:

nuosql test@localhost --user winston_colridge --password evoke_poltroon_379_vitalism

Connection failed: Authentication failed

正如您可以在此处看到的那样,用户不是’t able to log into the SQL client because they entered all lower-case letters for the password, instead of the mix as given with the 创建用户 statement.

在下一例中,数据库管理员正在利用外部认证系统(即,LDAP)而不是Nuodb’s内部系统,用于验证此用户帐户。

CREATE 用R pbrady EXTERNAL;

请注意,上面的示例中未给出密码。 相反,密码在外部维护。 如果您要提供密码,则会发生错误。

让’S查看具有异常用户名的另一个例子,其中一个仅包含数字:

CREATE 用R 1138
PASSWORD 'thx_1971';

Error 42000: syntax error on line 1
CREATE 用R 1138
            ^ unexpected 1138

CREATE 用R "1138"
PASSWORD 'thx_1971';

在上面的示例中,首先我们尝试使用名称创建用户 1138,这通常很好。 但是,用户名存储为字符串。 为了能够在第二次尝试中仅使用数字,我们将用户名括在双引号中。 这告诉Nuodb将数值视为字符串。

与此相关,让’查看包含数字的其他用户名:

CREATE 用R 1202Admin
PASSWORD 'io89764f';

Error 42000: syntax error on line 1
CREATE 用R 1202Admin
            ^ Numeric literal must be followed by space or delimiter character

CREATE 用R Admin1202
PASSWORD 'io89764f';

在上面的第一次尝试中,我们尝试创建包含数字和字母的用户名(即, 1202Admin.)。 The problem isn’它包含数字,但它从一个数字开始。 如前面的示例所示,括在双引号中的用户名将解决问题。 然而,在这里的示例中,我们通过选择略有不同的用户名(即, Admin1202.),它以字母而不是数字开始。 通过这样做,Nuodb了解用户名是字符串,之后的任何数字将被视为,而不是作为数字。 因此,此用户名不需要引号。

对于下一个例子,让 ’s考虑使用用户名中包含的特殊字符:

CREATE 用R Finance.Manager
PASSWORD 'lira_1861_2002';

Error 42000: syntax error on line 1
CREATE 用R Finance.Manager
                   ^ expected EXTERNAL or PASSWORD got .

CREATE 用R [Finance.Manager]
PASSWORD 'lira_1861_2002';

在这种情况下,尽管允许特殊字符,但在用户名内使用点混淆Nuodb。 This is the format by which schema and table names are specified (e.g., bookstore.books)。 要在用户名内包含点,我们只需要在双引号,反击或方括号内括起来,如此所示。