postgres - createuser не работает [дубликат]

Не удалось избежать публикации минималистского метода без зависимости или библиотек. Для этого требуется новый API-интерфейс. Могу ли я использовать его?

var url = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="

fetch(url)
.then(res => res.blob())
.then(blob => console.log(blob))

С помощью этого метода вы также можете легко получить arraybuffer, text и json


Я сделал простой тест производительности по сравнению с версией синхронизации Джереми es6. Версия синхронизации будет блокировать UI некоторое время.

// get some dummy gradient image
var img=function(){var a=document.createElement("canvas"),b=a.getContext("2d"),c=b.createLinearGradient(0,0,200,100);a.width=a.height=3000;c.addColorStop(0,"red");c.addColorStop(1,"blue");b.fillStyle=c;b.fillRect(0,0,a.width,a.height);return a.toDataURL()}();


async function perf() {
  
  const blob = await fetch(img).then(res => res.blob())
  // turn it to a dataURI
  const url = img
  const b64Data = url.split(',')[1]

  // Jeremy Banks solution
  const b64toBlob = (b64Data, contentType = '', sliceSize=512) => {
    const byteCharacters = atob(b64Data);
    const byteArrays = [];
    
    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
      const slice = byteCharacters.slice(offset, offset + sliceSize);
      
      const byteNumbers = new Array(slice.length);
      for (let i = 0; i < slice.length; i++) {
        byteNumbers[i] = slice.charCodeAt(i);
      }
      
      const byteArray = new Uint8Array(byteNumbers);
      
      byteArrays.push(byteArray);
    }
    
    const blob = new Blob(byteArrays, {type: contentType});
    return blob;
  }

  // bench blocking method
  let i = 1000
  console.time('b64')
  while (i--) {
    await b64toBlob(b64Data)
  }
  console.timeEnd('b64')
  
  // bench non blocking
  i = 1000

  // so that the function is not reconstructed each time
  const toBlob = res => res.blob()
  console.time('fetch')
  while (i--) {
    await fetch(url).then(toBlob)
  }
  console.timeEnd('fetch')
  console.log('done')
}

perf()

61
задан IMSoP 7 June 2013 в 03:00
поделиться

8 ответов

Вам нужно сначала запустить initdb. Он создаст кластер базы данных и начальную настройку

См. Как настроить postgresql в первый раз? и http://www.postgresql.org/docs/ 8,4 / статический / приложение-initdb.html

-3
ответ дан Community 18 August 2018 в 19:06
поделиться
  • 1
    Это совершенно неверно. Если пользователь не запустил initdb, у них не было бы сервера базы данных, который работал бы и принимал подключения, чтобы сообщить об этом сообщенном сообщении об ошибке. Удалите этот вводящий в заблуждение ответ. (BTW, в будущем, пожалуйста, перейдите по ссылке / docs / current / static /, чтобы избежать накопления устаревших ссылок) – Craig Ringer 7 June 2013 в 01:01

Вы упомянули Ubuntu, поэтому я собираюсь угадать, что вы установили пакеты PostgreSQL из Ubuntu через apt.

. Если это так, пользовательская учетная запись postgres PostgreSQL уже существует и настроена для доступа через peer для UNIX-сокетов в pg_hba.conf. Вы получаете к нему выполнение команд в качестве пользователя postgres unix, например:

sudo -u postgres createuser owning_user
sudo -u postgres createdb -O owning_user dbname

Это все в документации Ubuntu PostgreSQL , которая является первым хитом Google для «Ubuntu PostgreSQL "и рассматривается в многочисленных вопросах переполнения стека.

(Вы задали этот вопрос намного сложнее ответить, опуская данные, такие как ОС и версия, на которой вы находитесь, как вы установили PostgreSQL , и т. д.)

96
ответ дан Craig Ringer 18 August 2018 в 19:06
поделиться
  • 1
    ну после создания owning_user, как вы можете подключиться к этому пользователю? Я хочу подключить пользователя по умолчанию, который я использую, sudo -u postgres psql postgres. так же как подключиться owning_user? – Jony 9 September 2014 в 11:45
  • 2
    Три варианта. (a) Установите пароль для этого пользователя и отредактируйте pg_hba.conf, чтобы использовать md5 auth для этого пользователя (см. руководство); (b) Создайте пользователя ОС с тем же именем и продолжайте использовать peer auth; или (c) более продвинутые, создайте сопоставление pg_ident.conf, чтобы позволить пользователю вашей ОС войти в систему как новый пользователь. – Craig Ringer 9 September 2014 в 12:54
  • 3
    – user3402754 6 September 2018 в 06:14

Ваша ошибка опубликована в официальной документации. Вы можете прочитать эту статью .

Я скопировал причину для вас (и гиперссылки URL-адресов) из этой статьи:

Это произойдет если администратор не создал для вас учетную запись PostgreSQL. (Учетные записи пользователей PostgreSQL отличаются от учетных записей пользователей операционной системы.) Если вы являетесь администратором, см. Chapter 20 для создания справки. Вам нужно будет стать пользователем операционной системы, в котором был установлен PostgreSQL (обычно postgres) для создания первой учетной записи пользователя. Также может быть указано, что вам присвоено имя пользователя PostgreSQL, отличное от имени пользователя вашей операционной системы; в этом случае вам нужно использовать ключ -U или установить переменную среды PGUSER, чтобы указать ваше имя пользователя PostgreSQL

. В ваших целях вы можете:

1 ) Создайте учетную запись пользователя PostgreSQL:

sudo -u postgres createuser tom -d -P

(параметр -P для установки пароля; опция -d для создания базы данных для вашего имени пользователя «tom». '- ваше имя пользователя вашей операционной системы. Таким образом, вы можете выполнять команды PostgreSQL без sudo ing.)

2) Теперь вы должны выполнить команды createdb и другие команды PostgreSQL.

5
ответ дан Rocky Inde 18 August 2018 в 19:06
поделиться

У меня была такая же проблема, я просто делаю это

sudo su - postgres

createuser odoo -U postgres -dRSP #P для пароля (имя или имя пользователя, которое вы хотите o предоставить доступ к postgres)

0
ответ дан Sagar T 18 August 2018 в 19:06
поделиться

1- Вход по умолчанию PostgreSQL user (postgres)

sudo -u postgres -i

2- Как пользователь postgres. Добавить пользователя новой базы данных с помощью команды createuser

[postgres]$ createuser --interactive

3-exit

[postgres]$ exit
3
ответ дан Saman Mohamadi 18 August 2018 в 19:06
поделиться
sudo -u postgres createuser -s tom 

это должно помочь вам, поскольку это произойдет, если администратор не создал учетную запись пользователя PostgreSQL для вас. Также может быть указано, что вам присвоено имя пользователя PostgreSQL, отличное от имени пользователя операционной системы, в этом случае вам нужно использовать ключ -U.

24
ответ дан Tanmay 18 August 2018 в 19:06
поделиться

См. git gist с инструкциями здесь

Запустите это:

psql -U postgres

ИЛИ

 sudo -u postgres psql

в вашем терминале для входа в postgres

postgres=#

Run

CREATE USER new_username;

Примечание: замените имя new_us на пользователя, которого вы хотите создать, в вашем случае, который будет томом.

postgres=# CREATE USER new_username;
CREATE ROLE

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

postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE

. Чтобы подтвердить, все было успешно,

postgres=# \du
                         List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
new_username     | Superuser, Create DB                           | {}
postgres         | Superuser, Create role, Create DB, Replication | {}
root             | Superuser, Create role, Create DB              | {}

postgres=# 
28
ответ дан user3402754 18 August 2018 в 19:06
поделиться
  • 1
    Это работало, чтобы попасть в postgres: psql -U postgres – leontalbot 5 March 2018 в 03:00
0
ответ дан ostergaard 30 October 2018 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: