63 lines
No EOL
2 KiB
Markdown
63 lines
No EOL
2 KiB
Markdown
# PostgreSQL
|
|
Here are some instructions for setting up PostgreSQL for use with esmBot.
|
|
|
|
**1. Install PostgreSQL.**
|
|
#### Alpine
|
|
```sh
|
|
sudo apk add postgresql
|
|
```
|
|
|
|
#### Debian/Ubuntu
|
|
```sh
|
|
sudo apt-get install postgresql postgresql-client
|
|
```
|
|
|
|
#### Arch/Manjaro
|
|
```sh
|
|
sudo pacman -S postgresql
|
|
```
|
|
|
|
***
|
|
|
|
**2. (Optional) Tune PostgreSQL.**
|
|
|
|
[PGTune](https://pgtune.leopard.in.ua/) is a useful tool for generating configuration files for your PostgreSQL database. It is highly recommended that you generate a config using this tool as it can increase stability and performance.
|
|
|
|
***
|
|
|
|
**3. Create the bot user and database.**
|
|
|
|
When you install PostgreSQL, it'll create a new user on your system that acts as the "superuser" of the database. You'll need to run Postgres commands as this user; however, you can run a command as that user without switching to it by using `sudo`.
|
|
|
|
First, you'll need to create a user that the bot can interact with as well as the database itself:
|
|
```sh
|
|
sudo su - postgres -c "createuser esmbot"
|
|
sudo su - postgres -c "createdb esmbot"
|
|
```
|
|
Then, launch the PostgreSQL shell for the next few commands:
|
|
```sh
|
|
sudo -u postgres psql
|
|
```
|
|
If you want to give the user a password, you can do so like this:
|
|
```sql
|
|
ALTER USER esmbot WITH PASSWORD 'new_password';
|
|
```
|
|
Once you're inside the shell, you'll need to make sure the bot owns the database and has permissions:
|
|
```sql
|
|
ALTER DATABASE esmbot OWNER TO esmbot;
|
|
```
|
|
The database is now accessible by the bot, but it still doesn't know how to add/get data from it. To fix that, you'll need to add some tables. Luckily, the bot comes with a script to automate this:
|
|
```sh
|
|
POSTGRES_USER=esmbot POSTGRES_DB=esmbot utils/psqlinit.sh
|
|
```
|
|
You're done!
|
|
|
|
### Troubleshooting
|
|
If you get an error like `error: permission denied for table counts` when attempting to run the bot, try running these commands in the PostgreSQL shell:
|
|
```sql
|
|
\c esmbot
|
|
GRANT ALL PRIVILEGES ON guilds TO esmbot;
|
|
GRANT ALL PRIVILEGES ON counts TO esmbot;
|
|
GRANT ALL PRIVILEGES ON tags TO esmbot;
|
|
\q
|
|
``` |