Создать пользователя базы данных (Управление данными)

Краткая информация

Создает пользователя базы данных с правами доступа для создания данных в базе.

Использование

  • Инструмент можно использовать только с Oracle, Microsoft SQL Server, PostgreSQL или SAP HANA. Инструмент не поддерживается облачными сервисами баз данных. Поддерживается только сервис баз данных Google Cloud SQL for PostgreSQL.

  • Для Oracle и SQL Server, если существует имя входа в операционную систему, инструмент Создать пользователя базы данных может добавить его как имя пользователя указанной базы данных.

  • Вы не можете создать пользователя базы данных для группы Microsoft Windows.

  • Этот инструмент создает для пользователя общий файл журнала tables при запуске в базе геоданных на Oracle.

  • Пользователи, созданные в базе данных, могут получить следующие права:

    СУБДПрава доступа

    Oracle

    CREATE PROCEDURE

    CREATE SESSION

    CREATE SEQUENCE

    CREATE TABLE

    CREATE TRIGGER

    CREATE VIEW

    SELECT ON DBA_ROLES

    PostgreSQL

    CONNECT

    TEMPORARY

    USAGE для схемы sde, если пользователь создан в базе геоданных или базе данных с установленным типом ST_Geometry

    SELECT, INSERT, UPDATE и DELETE для представлений geometry_columns и geography_columns, и SELECT для представления spatial_ref_sys, если PostGIS установлен в базе данных

    SQL Server

    CREATE TABLE

    CREATE PROCEDURE

    CREATE VIEW

    SAP HANA

    Инструмент создает стандартного пользователя SAP HANA.

  • Если имя пользователя не существует в экземпляре SQL Server или кластере базы данных PostgreSQL, инструмент Создать пользователя базы данных добавит имя пользователя, создаст пользователя, указанного в параметре Входное подключение базы данных и создаст схему для пользователя в базе данных. Указанная база данных становится базой данных пользователя по умолчанию в SQL Server.

  • Если имя пользователя существует в данном экземпляре SQL Server, инструмент Создать пользователя базы данных добавляет пользователя в базу данных, указанную в параметре Входное подключение базы данных, параметр и создает соответствующую схему. База данных пользователя по умолчанию в SQL Server не меняется.

  • Если учетное имя существует в кластере базы данных PostgreSQL, инструмент Создать пользователя базы данных создает соответствующую ему схему в базе данных, указанной в параметре Входное подключение базы данных.

  • С помощью этого инструмента невозможно создать имя пользователя "sde". Пользователь sde является администратором базы геоданных и требует больше прав доступа, чем дает инструмент Создать пользователя базы данных.

  • Вы не можете использовать разделители, такие как двойные кавычки, при указании имени пользователя. Имя пользователя может содержать только символы, поддерживаемые СУБД, когда оно вводится без разделителей.

Параметры

ПодписьОписаниеТип данных
Входное подключение к базе данных

Файл подключения к многопользовательской базе геоданных в Oracle, PostgreSQL или SQL Server. Подключение должно быть установлено пользователем с правами администратора базы данных. При подключении к Oracle, необходимо выполнить вход как пользователь sys.

Workspace
Создание авторизованного пользователя операционной системы
(Дополнительный)

Определяет тип авторизации для пользователя. Используйте этот параметр только если имя для входа в операционную систему, в которой требуется добавить пользователя базы данных, уже существует. Эта опция поддерживается только для баз данных SQL Server и Oracle, так как только для них ArcGIS поддерживает аутентификацию средствами операционной системы.

  • Отмечено – создается пользователь с аутентификацией средствами операционной системы. Должно существовать соответствующее имя для входа в систему.
  • Не отмечено – создается пользователь с аутентификацией средствами базы данных. Это значение по умолчанию
Boolean
Пользователь базы данных

Имя нового пользователя базы данных.

Если необходимо создать пользователя базы данных с именем входа в операционную систему, укажите соответствующее имя входа.

String
Пароль пользователя базы данных
(Дополнительный)

Пароль для нового пользователя. Пароль должен соответствовать требованиям парольной политики базы данных.

Если создается пользователь базы данных для имени входа в операционную систему, вводить данные не требуется.

Encrypted String
Роль
(Дополнительный)

Имя существующей роли базы геоданных, к которой будет добавлен новый пользователь.

String
Имя табличного пространства
(Дополнительный)

Имя табличного пространства, которое будет использовано как табличное пространство по умолчанию для нового пользователя базы данных Oracle. Можно указать предварительно настроенное табличное пространство, в противном случае (если оно еще не существует) оно будет создано в местоположении по умолчанию Oracle и будет иметь размер 400 Мб. Если табличное пространство не указано, табличное пространство по умолчанию становится табличным пространством Oracle для пользователя по умолчанию.

String

Производные выходные данные

ПодписьОписаниеТип данных
Пользователь базы данных создан

Успешно ли инструмент завершил работу.

Boolean

arcpy.management.CreateDatabaseUser(input_database, {user_authentication_type}, user_name, {user_password}, {role}, {tablespace_name})
ИмяОписаниеТип данных
input_database

Файл подключения к многопользовательской базе геоданных в Oracle, PostgreSQL или SQL Server. Подключение должно быть установлено пользователем с правами администратора базы данных. При подключении к Oracle, необходимо выполнить вход как пользователь sys.

Workspace
user_authentication_type
(Дополнительный)

Определяет тип авторизации для пользователя. Если вы указываете OPERATING_SYSTEM_USER, имя пользователя в операционной системе должно уже существовать для пользователя, которого вы желаете создать. Пользователи операционной системы поддерживаются только для баз данных SQL Server и Oracle.

  • DATABASE_USERБудет создан пользователь с аутентификацией средствами базы данных. Это значение по умолчаниюЕсли ваша СУБД не настроена для использования аутентификации средствами базы данных, не используйте эту опцию.
  • OPERATING_SYSTEM_USERБудет создан пользователь с аутентификацией средствами операционной системы. Должно существовать соответствующее имя для входа в систему.Если ваша СУБД не настроена для использования аутентификации средствами операционной системы, не используйте эту опцию.
Boolean
user_name

Имя нового пользователя базы данных.

Если необходимо создать пользователя базы данных с именем входа в операционную систему, укажите соответствующее имя входа.

String
user_password
(Дополнительный)

Пароль для нового пользователя. Пароль должен соответствовать требованиям парольной политики базы данных.

Если создается пользователь базы данных для имени входа в операционную систему, вводить данные не требуется.

Encrypted String
role
(Дополнительный)

Имя существующей роли базы геоданных, к которой будет добавлен новый пользователь.

String
tablespace_name
(Дополнительный)

Имя табличного пространства, которое будет использовано как табличное пространство по умолчанию для нового пользователя базы данных Oracle. Можно указать предварительно настроенное табличное пространство, в противном случае (если оно еще не существует) оно будет создано в местоположении по умолчанию Oracle и будет иметь размер 400 Мб. Если табличное пространство не указано, табличное пространство по умолчанию становится табличным пространством Oracle для пользователя по умолчанию.

String

Производные выходные данные

ИмяОписаниеТип данных
out_result

Успешно ли инструмент завершил работу.

Boolean

Пример кода

CreateDatabaseUser, пример 1 (окно Python)

В этом примере скрипт использует ранее созданный файл подключения к базе данных (oracledb1.sde) для создания пользователя базы данных в Oracle и табличного пространство по умолчанию для него (sdetbs)

import arcpy
arcpy.CreateDatabaseUser_management("C:/myconnections/oracledb1.sde", 
                                    "DATABASE_USER", "map", "Pam987", "sdetbs")
CreateDatabaseUser, пример 2 (окно Python)

Пример скрипта создает входную рабочую область (pgconn.sde) в папке с именем подключения и создает роль учетной записи базы данных и схему в PostgreSQL.

import arcpy
arcpy.CreateDatabaseConnection_management("C:/connections", "pgconn.sde", 
                                          "POSTGRESQL", myserver, mypgdb, 
                                          "DATABASE_AUTH", "ela", "3L@pwd", 
                                          "SAVE_USERNAME")
arcpy.CreateDatabaseUser_management("C:/connections/pgconn.sde", 
                                    "DATABASE_USER", "dataowner", "N0look")
CreateDatabaseUser, пример 3 (окно Python)

Пример скрипта создает пользователя базы данных, сопоставленного с учетной записью ОС (mynet\vorhoos) в SQL Server и использует ранее созданный файл подключения к базе данных (connection_ssi.sde)

import arcpy
arcpy.CreateDatabaseUser_management("C:/gdbconnections/connection_ssi.sde", 
                                    "OPERATING_SYSTEM_USER", "mynet\\vorhoos")
CreateDatabaseUser, пример 4 (автономный скрипт)

Приведенный автономный скрипт Python позволит вам ввести необходимую для вашего сайта информацию с помощью опций создания пользователя базы данных:

"""
Name: create_database_user.py
Description: Provide connection information to a database user.
Type create_database_user.py -h or create_database_user.py --help for usage
"""

# Import system modules
import arcpy
import os
import optparse
import sys


# Define usage and version
parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for 10.1 release")

#Define help and options
parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS:  SQLSERVER, ORACLE, or POSTGRESQL.")                   
parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name")
parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
parser.add_option ("--auth", dest="Account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive):  DATABASE_AUTH, OPERATING_SYSTEM_AUTH.  Default=DATABASE_AUTH")
parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user")
parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password")
parser.add_option ("--utype", dest="user_type", type ="choice", choices=['DATABASE_USER', 'OPERATING_SYSTEM_USER'], default='DATABASE_USER', help="Authentication type options (case-sensitive):  DATABASE_USER, OPERATING_SYSTEM_USER.  Default=DATABASE_USER")
parser.add_option ("-u", dest="dbuser", type="string", default="", help="database user name")
parser.add_option ("-p", dest="dbuser_pwd", type="string", default="", help="database user password")
parser.add_option ("-r", dest="role", type="string", default="", help="role to be granted to the user")
parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name")
# Check if value entered for option
try:
	(options, args) = parser.parse_args()

	#Check if no system arguments (options) entered
	if len(sys.argv) == 1:
		print "%s: error: %s\n" % (sys.argv[0], "No command options given")
		parser.print_help()
		sys.exit(3)

	#Usage parameters for spatial database connection
	database_type = options.Database_type.upper()
	instance = options.Instance
	database = options.Database.lower()	
	account_authentication = options.Account_authentication.upper()
	dbms_admin = options.Dbms_admin
	dbms_admin_pwd = options.Dbms_admin_pwd
	dbuser = options.dbuser
	dbuser_pwd = options.dbuser_pwd	
	tablespace = options.Tablespace
	user_type = options.user_type
	role = options.role

	
	if (database_type == "SQLSERVER"):
		database_type = "SQL_SERVER"
	
	if( database_type ==""):	
		print(" \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified."))
		parser.print_help()
		sys.exit(3)		
	
	if(database_type == "SQL_SERVER"):
		if( account_authentication == "DATABASE_AUTH" and dbms_admin == ""):
			print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified with database authentication"))
			sys.exit(3)
		if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""):
			print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication..."))
	else:		
		if( dbuser.lower() == ""):
			print("\n%s: error: %s\n" % (sys.argv[0], "Database user must be specified."))
			sys.exit(3)		
		if( dbms_admin == ""):
			print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!"))
			sys.exit(3)

	if ( user_type == "DATABASE_USER" and (dbuser =="" or dbuser_pwd =="")):
		print(" \n%s: error: \n%s\n" % (sys.argv[0], "To create database authenticated user, user name and password must be specified!"))
		parser.print_help()
		sys.exit(3)	

	# Get the current product license
	product_license=arcpy.ProductInfo()
	
	# Checks required license level
	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
		print("\n" + product_license + " license found!" + "  Creating a user in an enterprise geodatabase or database requires an ArcGIS Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS Server license.")
		sys.exit("Re-authorize ArcGIS before creating a database user.")
	else:
		print("\n" + product_license + " license available!  Continuing to create...")
		arcpy.AddMessage("+++++++++")

	# Local variables
	instance_temp = instance.replace("\\","_")
	instance_temp = instance_temp.replace("/","_")
	instance_temp = instance_temp.replace(":","_")
	Conn_File_NameT = instance_temp + "_" + database + "_" + dbms_admin   

	if os.environ.get("TEMP") == None:
		temp = "c:\\temp"	
	else:
		temp = os.environ.get("TEMP")
	
	if os.environ.get("TMP") == None:
		temp = "/usr/tmp"		
	else:
		temp = os.environ.get("TMP")  

	Connection_File_Name = Conn_File_NameT + ".sde"
	Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde"
	
	# Check for the .sde file and delete it if present
	arcpy.env.overwriteOutput=True
	if os.path.exists(Connection_File_Name_full_path):
		os.remove(Connection_File_Name_full_path)

	try:
		print("\nCreating Database Connection File...\n")
		# Process: Create Database Connection File...
		# Usage:  out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true)
		#arcpy.CreateDatabaseConnection_management(temp , Connection_File_Name, database_type, instance, database, account_authentication, dbms_admin, dbms_admin_pwd, "TRUE")
		arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=dbms_admin, password=dbms_admin_pwd, save_user_pass="TRUE")
	        for i in range(arcpy.GetMessageCount()):
			if "000565" in arcpy.GetMessage(i):   #Check if database connection was successful
				arcpy.AddReturnMessage(i)
				arcpy.AddMessage("\n+++++++++")
				arcpy.AddMessage("Exiting!!")
				arcpy.AddMessage("+++++++++\n")
				sys.exit(3)            
			else:
				arcpy.AddReturnMessage(i)
				arcpy.AddMessage("+++++++++\n")

		print("Creating database user...\n")
		arcpy.CreateDatabaseUser_management(input_workspace=Connection_File_Name_full_path, user_authentication_type=user_type, user_name=dbuser, user_password=dbuser_pwd, role=role, tablespace_name=tablespace)
		for i in range(arcpy.GetMessageCount()):
			arcpy.AddReturnMessage(i)
		arcpy.AddMessage("+++++++++\n")
	except:
		for i in range(arcpy.GetMessageCount()):
			arcpy.AddReturnMessage(i)
			
#Check if no value entered for option	
except SystemExit as e:
	if e.code == 2:
		parser.usage = ""
		print("\n")
		parser.print_help()   
		parser.exit(2)

Информация о лицензиях

  • Basic: Нет
  • Standard: Да
  • Advanced: Да

Связанные разделы