So erstellen Sie einen neuen Benutzer in reinem SQL

Welche sind die mindestens erforderlichen Tabellen, in denen Zeilen hinzugefügt werden müssen, um einen Benutzer zu erstellen, der dann in Discourse als aktiv sichtbar ist?

Ich habe gerade eine Zeile in user_emails eingefügt:

insert into user_emails (user_id, email, "primary", created_at, updated_at) values (2,'user@email.com',true, now(), now());

Es ist nicht überraschend, dass er nicht in der GUI erschienen ist. Aber was sind die Mindestschritte? Muss ich weitere Tabellen füllen, oder muss ich etwas neu starten?

Ich erwarte nun, dass jemand sagt, dies sei nicht der richtige Weg, und ich verstehe das. Aber für mich könnte es so sein, wie ich unten erkläre (einige meiner Annahmen mögen falsch sein, aber so verstehe ich es):

  • Alle Importskripte, die Daten aus einem anderen Forum-Datenbank importieren, erwarten, dass sie von der Discourse-Instanz aus eine Verbindung zu diesem anderen Forum herstellen können. Da es jedoch schwierig bis unmöglich ist, von der Live-Discourse-Instanz aus auf das andere Forum (jforum) zuzugreifen, ist auch das Installieren einer Discourse-Entwicklungsumgebung, in der sich das alte Forum befindet (ein sehr alter Server), nicht möglich.
  • Ich verstehe Ruby on Rails nicht, daher kann ich die vorhandenen Skripte nicht anpassen, aber ich verstehe SQL.
  • Ich könnte die API nutzen (ich habe nur 5000 Benutzer), aber ich möchte eine Methode haben, bei der der MD5-Passworthash erhalten bleibt, ohne dass alle Benutzer ihre Passwörter zurücksetzen müssen. Daher glaube ich nicht, dass dies über die API möglich ist.
  • Es gibt ein jforum-Importskript, mit dem ich problemlos die erforderlichen SQL-Befehle ansehen kann, um Daten aus jforum zu extrahieren, um sie dann in CSV-Dateien zu speichern und in die Datenbank zu laden.
  • Die Bulk-Importer bieten möglicherweise einen Weg, SQL direkt in Discourse einzufügen, aber ich sehe den SQL-Code nicht klar.
  • Es scheint, dass das Hinzufügen der Benutzer der Schlüssel ist; das Hinzufügen von Kategorien, Themen und Beiträgen sollte dann nicht so schwierig sein.

Right!

If you did, you’d not be asking. :wink:

The likelihood that you’ll end up with a corrupt database is pretty high. And then no one will be able to help you.

Dump your database and restore on your local Discourse server (or anywhere that it can connect to–I’ve done larger imports with a remote database over my home internet connection) and then run the existing script.

It’ll be much easier to use Ruby that you don’t understand than to understand it well enough to figure out how to write the SQL. I learned Ruby a long time after I wrote my first importer.

5 „Gefällt mir“

That is a bit condesensing !
If the bulk import script is running sql (as I think it is)then documenting the SQL required to create a user is really no more dangerous then trying to use a bulk import script. And since I currently have a vanilla discourse install it wouldn’t terribly matter it if got messed up.I expect I have many more years in development than yourself.

What I don’t have great experience is all the admin tasks, and my first attempt to install a local Discourse server just opened a can of worms, and if I cant connect to my JForum mysql server from my discourse server then I’m going to have to install mysql as well and transfer the database. The existing jforum script isn’t checked into the main source tree, and Im on a very old version of jforum so not expecting it to work.

2 „Gefällt mir“

I meant no offense. I guess you missed the :wink:?

I bet you’re right!

Sometimes free advice from someone that’s worked with Discourse full time for over three years, has done scores of imports, and written several importers from scratch is worth what you pay for it.

5 „Gefällt mir“

How about setting up an SSH tunnel?

Inconsistent, maybe. Corrupt, no.

But you can create the users using the API and then insert the md5 hashes in a custom field using SQL. You will have best of both worlds.

5 „Gefällt mir“

Ooh! That’s a pretty great idea.

This is the free advice you’re looking for!

3 „Gefällt mir“

Yes, I had the thought but as I dont quite understand how the md5 hashing works wasn’t clear if that was possibility, okay I will give that a go.

Alles, was Sie tun müssen, ist ein benutzerdefiniertes Feld einzufügen:

  • user_id: offensichtlich
  • name: „import_pass“
  • value: der MD5-Digest

Und installieren Sie das Plugin migratepassword.

2 „Gefällt mir“

Danke, ich habe ein paar Fragen, bei denen ich hoffe, dass Sie mir helfen können.

Installation

Führen Sie in Ihrem Discourse-Verzeichnis bundle exec rake plugin:install repo=http://github.com/[Communiteq](https://www.communiteq.com) (ehemals DiscourseHosting)/discourse-migratepassword aus
Starten Sie Discourse neu
  1. Ich habe es installiert, aber wie starte ich Discourse neu?

  2. Wie füge ich das benutzerdefinierte Feld ein? Können Sie mir das SQL angeben, oder kann dies über die API mit dem Teil "user_fields[1]": "string" erfolgen? Ich kann Benutzer derzeit programmatisch über die API erstellen, ignoriere dieses Feld jedoch momentan.

  3. Wenn das Plugin installiert ist, ist der Wert des Passworts, der als Teil des API-Aufrufs zum Erstellen eines Benutzers übergeben wird, irrelevant.

  1. no, it will prevail over the md5 digest in the custom field.

The answers to the other two questions can easily be found on this forum. If you want to save time we can do the import and/or hosting for you as a paid service.

1 „Gefällt mir“

I did search for both answers, was unable to find. In the first case it is confusing that some installs are done via editing the yaml file and then relaunching the docker , and some seem such as this are installed whilst in the docker container, its not cxlear what restart means in this case.

I cant really find any pure sql in this forum

Surprised there seems such a push to sale paid services for using this opensrc software , never like this when i ask questions on stackoverflow.

1 „Gefällt mir“

I love to think along, innovate and contribute. But I also need to make a living and that means that I need to draw a line somewhere, and I try to draw it where I get the idea that I’m doing work instead of innovating, contributing and thinking along.

Looking up the SQL query for a user custom field is work for me, and as you’re an experienced dev I estimate that you can figure it out as well :smiley:

4 „Gefällt mir“

Well sure I can try and work it out but no harm in asking since its not

can easily be found on this forum

As for the other question, well it remains unclear to me.

I dont expect you to do my work for me, on the other hand side i do genrally find it frustrating how documentation assumes alot from users.

OK question 2, an example of adding a custom import_pass field for user_id 5, (user_id can be seen in the user_emails table or id from users table)

insert into user_custom_fields (user_id, name, value, created_at, updated_at) values (5,‘import_pass’,‘2aee1c40222c7754d4534e61452612cc’, now(), now());

2 „Gefällt mir“

Okay I found it
./launcher restart app
but doesnt seem to be restarting, I can enter app and connect to db, but cant connect to website. May just rebuild and start again

1 „Gefällt mir“

So I ran ./launcher rebuild app and now it is back and working.

I thought this would recreate the database but it has not so I guess that is because the actual database is persisting outside of docker and rebuild just rebuilds the docker app. Also I see the dataexplorer plugin I added (by modifying the yaml file is still there). But is the passwordmigration plugin there or does it get wiped out by rebuild, there is certainly nothing in the plugs in section of the adminpage.

Right I tried installing passwordmigration and then ran restart again, and once again my site is down, it does seem like passwordmigration is breaking something ?

So rebuilt again, got it working (but now passwordmigration plugin missing). If I run ./launcher restart app without installing migrationpassword first it restarts okay, so does seem to be a particular problem with migrationpassword on my setup

1 „Gefällt mir“

Last time I tried, the passwordmigration plugin was incompatible with running an import, so you’ll want to install it after you do the import.

It could be that it’s breaking your rebuild, but that’d be fairly surprising, as Richard uses it in his hosting. I recommend that you install it in app.yml just as you did the data explorer after you’ve done your import.

rm -rf the postgres directories in /var/discourse/shared/standalone if you want to get a new database. Maybe have a look at Advanced Troubleshooting with Docker

2 „Gefällt mir“

disabling it during the import should be sufficient

3 „Gefällt mir“

Weird, dropped database and ran ./discourse-setup so had a brand new install, everything fine.
Installed migrationpassword with rake and restarted, again website fails with 502 !
DataExplorer plugin still existed, so removed that, rebuilt, ok, then reinstalled migrationpassword and fails with 502 again.

So confusing because clearly works for others but doesn’t work on my vanilla install.

Will try to install via editing the app.yml file next.

1 „Gefällt mir“

(Das Weihnachtseinkaufen hat dazwischengekommen), aber ich habe es endlich geschafft, migratepassword zu installieren, indem ich app.yml bearbeitet und neu aufgebaut habe … und es hat funktioniert!
Die Option bundle exec rake plugin:install repo=http://github.com/[Communiteq](https://www.communiteq.com) (ehemals DiscourseHosting)/discourse-migratepassword funktioniert jedoch nicht bei meiner Vanilla-Installation. Vielleicht sollte dies in der README.md unter GitHub - communiteq/discourse-migratepassword: Support migrated password hashes · GitHub überprüft oder entfernt werden.

1 „Gefällt mir“