HSQLDB режим сервера имя пользователя / пароль - PullRequest
5 голосов
/ 11 января 2012

Если я запускаю HSQLDB в режиме сервера, используя мой код Java, сервер запускается без проблем.Однако, когда я пытаюсь подключиться к нему либо через код Java, либо через HSQLDB DatabaseManagerSwing;Я не могу подключиться.

Я запустил сервер с user = conn1 и password = conn1 в режиме только памяти.Но при подключении к серверу это дало мне следующее исключение:

java.sql.SQLInvalidAuthorizationSpecException: invalid authorization specification - not found: conn1

Я могу подключиться, только дав user = SA и пустой пароль.Я использую HSQLDB 2.2.5 и JRE1.7 на компьютере с Windows 7.

Может кто-нибудь сказать мне, где я делаю неправильно?

Ответы [ 4 ]

12 голосов
/ 11 января 2012

Если вы попробуете это с 2.2.6, вы, вероятно, получите сообщение об ошибке, так как свойства вашего сервера неверны.Свойства «server.username» и «server.password» недопустимы.А свойство dbname.0 должно быть в нижнем регистре.

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

server.database.0 = file:E:/DB/myDB;user=test;password=test
server.dbname.0 = mydb

После завершения работы сервера нет необходимости указывать имя пользователя и пароль.Учетные данные используются только для создания базы данных.После этого проверяются учетные данные при установлении соединения с сервером.

3 голосов
/ 08 мая 2014

Похоже, проблема, с которой вы столкнулись (по крайней мере на начальном этапе), заключается в том, что для HSQL в базах данных памяти имя пользователя «должно быть» sa (без учета регистра или пусто, что подразумевает «значение по умолчанию», которое это sa ). Вы можете использовать пустой пароль или указать пароль. Если вы укажете пароль и позже захотите подключиться к той же (в памяти) БД, вам придется повторно использовать тот же пароль. Если вы хотите использовать пользователя, отличного от SA, вам, вероятно, придется сначала подключиться к базе данных и выполнить несколько команд типа «создать пользователя». Затем снова подключитесь, используя этого пользователя (при условии, что ваша БД находится в памяти).

Вы можете использовать несколько разных баз данных в памяти (если это то, что вы пытаетесь достичь, указав другого пользователя), например:

// change the MySpecialTestDb String for multiple different in memory databases
// or reuse the same value
// to reconnect to a previously created in memory database [i.e. within the same process previously].
String DB_CONNECTION_STR = "jdbc:hsqldb:mem:MySpecialTestDb"; 
String DB_USERNAME_STR = "sa";
String DB_USERNAME_PASSWORD = "";
DriverManager.getConnection(DB_CONNECTION_STR, DB_USERNAME_STR, DB_USERNAME_PASSWORD);

ref: http://www.hsqldb.org/doc/1.8/guide/guide.html#advanced-chapter

Или, если вы хотите просто «сбросить» базу данных в памяти, как между каждым модульным тестом, см. здесь .

1 голос
/ 09 декабря 2012

Точка № 1) Каждый раз, когда вы создаете БД, вы должны указать имя пользователя и пароль. Вы можете оставить это как пустым; Но при подключении к серверу необходимо использовать одно и то же имя пользователя и пароль.

Если вы наблюдаете файл сценария вашей БД, вы можете увидеть команды вроде: -

CREATE USER "usr" PASSWORD DIGEST '9003d1df22eb4d3820015070385194c8'
ALTER USER "usr" SET LOCAL TRUE
GRANT DBA TO "usr"

Я создал базу данных с именем пользователя "usr", поэтому она появилась в файле скрипта в этих командах. Теперь при запуске сервера мне не нужно указывать имя пользователя или пароль. Он будет игнорировать эту информацию.

При подключении к серверу необходимо указать точно такие же имя пользователя и пароль, которые вы указали при создании БД.

пункт № 2) Убедитесь, что в пути к файлам БД нет места. Если есть место, тогда заключите весь путь в двойные кавычки. Я изо всех сил пытался выяснить эту глупую ошибку.

Теперь, если я запустил сервер по приведенной ниже команде, он запускается правильно

1) Перейти к lib из HSQL

cd C:\Users\owner\Documents\Java Project\hsqldb-2.2.9\hsqldb\lib

Тогда дайте команду

java -cp hsqldb.jar org.hsqldb.Server -database.0 file:"C:\Users\owner\Documents\Java Project\hsqldb-2.2.9\TmpDBLocation\myKauDB" -dbname.0 xdb

2) В другой командной строке перешел в папку lib

cd C:\Users\owner\Documents\Java Project\hsqldb-2.2.9\hsqldb\lib

Затем подключил Swing UI HSQL DB, введя команду в другом окне командной строки

java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing --driver org.hsqldb.jdbcDriver --URL jdbc:hsqldb:hsql://localhost/xdb --user "usr" --password ""
0 голосов
/ 03 марта 2015

В моей новой установке 2.3.2 после нажатия bin/runServer.bat мне удалось подключиться (с Белкой), используя:

URL: jdbc:hsqldb:hsql://localhost:9001
User: SA
Password: <blank>
...