HI @Pratik
The MySQL/MariaDB account dedalo_api_demo can connect and read (so the green "Database is ready" check passes — it only tests the connection, not writing), but it isn't allowed to write into the informant table of the diffusion target database. Notice some operations in the log succeeded, which means this account has write access to some tables but not all — a sign the permissions were granted only partially. The clean fix is to give it full rights on that one database.
You need to grant full privileges to the Dédalo user that manages the diffusion.
Something like this in your case:
GRANT ALL PRIVILEGES ON `PUT_DATABASE_NAME_HERE`.* TO 'dedalo_api_demo'@'localhost';
FLUSH PRIVILEGES;
WEB APPLICATION MANAGER
The easy way could be to use an MySQL web administrator like
AdminNeo or
phpMyAdmin
TERMINAL
You can also made it from terminal. This is the procedure, step by step:
Step 1 — Open the server terminal
If you're sitting at the server, open its Terminal application. If the server is elsewhere, connect to it first with SSH from your computer:
ssh your_username@your-server-address
You'll know you're in when you see a prompt ending in $ (a normal user) or # (administrator).
Step 2 — Log into the database as root
Type this and press Enter:
mysql -u root -p
It will ask for a password. Type the MySQL root password and press Enter.
▎ If you get an Access denied error here, try this alternative instead (common on Ubuntu/Debian servers), which logs in using your Linux admin rights:
▎ sudo mysql
You're now inside the database when the prompt changes to something like:
MariaDB [(none)]>
(or mysql>). From here on, every command must end with a semicolon ;.
Step 3 — Find the exact target database name
The error told us the table (informant) but not the database. This command finds which database that table lives in:
SELECT table_schema FROM information_schema.tables WHERE table_name = 'informant';
It will print a small table listing the database name(s), for example:
+--------------------+
| table_schema |
+--------------------+
| dedalo_diffusion |
+--------------------+
Write down that name (in this example, dedalo_diffusion). That's your target database.
Step 4 — (Optional) See what the account is currently missing
SHOW GRANTS FOR 'dedalo_api_demo'@'localhost';
This shows the current permissions — useful to confirm INSERT is missing before, and present after.
Step 5 — Grant the privileges
Run this, replacing dedalo_diffusion with the database name you found in Step 3 (keep the back-ticks ` around the name):
GRANT ALL PRIVILEGES ON dedalo_diffusion.* TO 'dedalo_api_demo'@'localhost';
FLUSH PRIVILEGES;
- The first line gives the account full read and write rights, but only on that one database — nothing else on the server is affected.
- FLUSH PRIVILEGES; tells the database to apply the change immediately.
You should see Query OK after each line.
▎ ⚠️ Do not add IDENTIFIED BY '...' to that command. The account already logs in correctly, so it only needs permissions — adding a password clause could accidentally change its password and break the connection.
Step 6 — Confirm it worked
SHOW GRANTS FOR 'dedalo_api_demo'@'localhost';
You should now see the new line granting privileges on your database (it will include INSERT, or ALL PRIVILEGES).
Step 7 — Leave the database
EXIT;
You'll return to the normal terminal prompt. You can close the terminal.
Step 8 — Test in Dédalo
Go back to the Diffusion | People screen and click Publish again. The errors list should now be empty and the records will save.
If something goes wrong:
- Access denied at Step 2 → wrong MySQL root password; try sudo mysql instead.
- ERROR 1133 ... can't find any matching row in the user table at Step 5 → the username or host doesn't match exactly. Copy it precisely as in the error: 'dedalo_api_demo'@'localhost'.
- Still denied after publishing → double-check the database name from Step 3 was typed exactly in Step 5.
I hope this help you.
PD: Remember that current user is the Dédalo MySQL/MariaDB user, with all privileges to create and delete tables in the target database.
In the publication side (/publication) the connection is made by another MySQL/MariaDB user with read only privileges
Best