2019-04-30 21:30:26 +08:00
# Updating users passwords
2022-11-27 15:16:18 +08:00
## Option 1 (if you are using the integrated Postgres database):
2019-05-11 04:33:15 +08:00
2020-01-21 05:02:02 +08:00
You can reset a user's password via the Ansible playbook (make sure to edit the `<your-username>` and `<your-password>` part below):
2019-04-30 21:30:26 +08:00
2019-05-12 10:39:31 +08:00
```
2020-01-21 05:05:46 +08:00
ansible-playbook -i inventory/hosts setup.yml --extra-vars='username=< your-username > password=< your-password > ' --tags=update-user-password
2019-05-12 10:39:31 +08:00
```
2019-04-30 21:30:26 +08:00
2024-10-17 21:19:28 +08:00
**Note**: `<your-username>` is just a plain username (like `john` ), not your full `@<username>:example.com` identifier.
2019-04-30 21:30:26 +08:00
2020-07-17 16:31:20 +08:00
**You can then log in with that user** via the Element service that this playbook has created for you at a URL like this: `https://element.<domain>/` .
2019-04-30 21:30:26 +08:00
2019-05-12 10:39:31 +08:00
## Option 2 (if you are using an external Postgres server):
2019-05-11 04:33:15 +08:00
You can manually generate the password hash by using the command-line after **SSH** -ing to your server (requires that [all services have been started ](installing.md#starting-the-services )):
2019-04-30 21:30:26 +08:00
2019-05-12 10:39:31 +08:00
```
docker exec -it matrix-synapse /usr/local/bin/hash_password -c /data/homeserver.yaml
```
2019-04-30 21:30:26 +08:00
and then connecting to the postgres server and executing:
2019-05-12 10:39:31 +08:00
```
UPDATE users SET password_hash = '< password-hash > ' WHERE name = '@someone:server.com'
```
2020-12-23 18:23:09 +08:00
2019-04-30 21:30:26 +08:00
where `<password-hash>` is the hash returned by the docker command above.
2019-05-12 10:39:31 +08:00
## Option 3:
2024-01-17 13:58:01 +08:00
Use the Synapse User Admin API as described here: https://github.com/element-hq/synapse/blob/master/docs/admin_api/user_admin_api.rst#reset-password
2019-05-12 10:39:31 +08:00
2022-08-20 17:47:14 +08:00
This requires an [access token ](obtaining-access-tokens.md ) from a server admin account. *This method will also log the user out of all of their clients while the other options do not.*
2020-01-21 04:59:36 +08:00
2022-12-08 02:36:22 +08:00
If you didn't make your account a server admin when you created it, you can learn how to switch it now by reading about it in [Adding/Removing Administrator privileges to an existing Synapse user ](registering-users.md#addingremoving-administrator-privileges-to-an-existing-synapse-user ).
2019-05-12 10:39:31 +08:00
### Example:
2024-10-10 21:15:01 +08:00
To set @user:example .com's password to `correct_horse_battery_staple` you could use this curl command:
2019-05-12 10:39:31 +08:00
```
2024-10-10 21:15:01 +08:00
curl -XPOST -d '{ "new_password": "correct_horse_battery_staple" }' "https://matrix.example.com/_matrix/client/r0/admin/reset_password/@user:example.com?access_token=MDA...this_is_my_access_token
2019-05-12 10:39:31 +08:00
```