Odoo database access failures on a self-hosted server usually come from one of three places: the database manager is protected by an unknown or incorrect master password, the login page is filtering the wrong databases, or PostgreSQL refuses the Odoo role’s request to create a database. Fix them in that order: verify admin_passwd and restart Odoo, correct the exact dbfilter option and hostname match, then grant the Odoo PostgreSQL role the CREATEDB privilege. After one database is reliably selected for each hostname, disable database listing with list_db = False.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
The option names and behavior below follow Odoo 19.0 documentation and corroborating community guidance. Check the configuration reference for your installed Odoo release before applying a setting, because package layouts and service names vary between distributions.
As an Amazon Associate I earn from qualifying purchases.
Identify which Odoo database problem you have
Start with the visible symptom rather than changing several settings at once. The three failure families have different owners and different fixes.
| Symptom | Likely control | First check |
|---|---|---|
| Create, delete, dump or restore in the database manager is blocked, or Odoo rejects the master password | Odoo’s admin_passwd in the configuration file |
Confirm the value is present, non-default and loaded by the service that is running Odoo |
| The login page lists every database, the wrong database, or no database | dbfilter, db_name, hostname handling and proxy settings |
Check the spelling and test the regular expression against the exact hostname Odoo receives |
| “permission denied to create database” appears | PostgreSQL role attributes | Inspect the Odoo role with du and verify that it has CREATEDB |
Record the Odoo version, the configuration file used by the running service, the public hostname, and the PostgreSQL role name before editing anything. A common cause of wasted troubleshooting is changing one configuration file while the service starts with another.
#1 Best Overall
- [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
- [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
- [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
- [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
- [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.
Prepare safely before changing configuration
Confirm the active Odoo service and configuration
Use the service manager or container definition used by your installation to determine which Odoo process is serving requests. Open the configuration file passed to that process, not merely a similarly named sample file. If Odoo runs in a container, make the change in the mounted configuration or deployment definition so a restart does not discard it.
Keep a copy of the current configuration and note the existing values for admin_passwd, db_name, dbfilter, list_db and proxy_mode. Edit only the setting related to the symptom, then restart Odoo and review its startup log for configuration or database errors.
Protect the data and the credentials
- Do not experiment with delete, restore or dump actions on the production database until you have a verified backup and a tested restore path.
- Choose a long, randomly generated value for
admin_passwd. It is a control password for database-manager operations, not the password of an Odoo user. - Give the PostgreSQL role only the capabilities Odoo needs. The documented role-creation command enables database creation while explicitly disabling superuser and role-creation privileges.
Fix database-manager access with admin_passwd
Odoo gates database-manager operations—including create, delete, dump and restore—behind a master password. That password is read from admin_passwd in the Odoo configuration file and is checked before an alteration is allowed. It is not changed from the normal user profile screen.
Set or replace the master password
- Stop or otherwise quiesce the Odoo service according to your deployment method so the edit cannot race with a restart.
- Open the active Odoo configuration file and locate the
[options]section. - Set a non-default value, for example:
[options] admin_passwd = 7f4c1b9e6d2a8c0f3e5b1a7d9c6f2e8b - Save the file with permissions that allow the Odoo service account to read it but do not expose the secret to ordinary users.
- Restart Odoo using the same service, container, or supervisor command that normally launches it.
- Open the database manager again and enter the new value. If the old value is still accepted or rejected, verify that the process actually loaded the edited file rather than another configuration supplied on its command line.
The documentation recommends a randomly generated password because anyone who can reach the database manager and obtain that secret could attempt destructive database operations. Do not reuse an ordinary Odoo user password.
Recover when the master password is forgotten
The documented community recovery route is administrative: edit admin_passwd directly in the configuration file, save a new value, and restart Odoo. There is no requirement to know the previous value if you have operating-system access to the server and permission to change the service configuration.
- Locate the configuration file used by the running Odoo instance.
- Replace the existing
admin_passwdvalue with a newly generated random value. - Restart Odoo completely; a browser refresh alone cannot load the new setting.
- Test one harmless database-manager action, such as opening the manager and authenticating, before attempting create, delete, dump or restore.
If the new password fails immediately after the restart, check for duplicate configuration files, environment variables or a second Odoo process listening on the same host. Also check the service log for a syntax error that caused Odoo to fall back to a different launch configuration.
Rank #2
- 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
- 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
- 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
- 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
- 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
Hide the database manager after the server is correctly routed
To remove database-manager listing and alteration screens from normal access, set:
list_db = False
Odoo 19.0 documentation also gives the command-line equivalent --no-database-list. Disabling the list is safe only after db_name and dbfilter are configured so each hostname resolves to the intended database. Otherwise, users can reach a login page with no selectable database and no practical way to choose the right one.
Keep a secure administrative procedure for the rare cases when you need to create, restore or remove a database. Hiding the list does not replace a strong admin_passwd; it removes the normal listing interface, while the master password still protects database-manager operations when that interface is enabled.
Fix the login page with dbfilter, db_name and hostname checks
dbfilter is a regular expression that restricts which PostgreSQL databases Odoo exposes for a request, based on the hostname. The option is spelled dbfilter, with no underscore. A setting named db_filter is ignored, which can leave every database visible.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Correct the option name and basic syntax
In the active configuration file, use the exact option name:
[options]
dbfilter = ^%d$
The commonly documented pattern ^%d$ matches the first subdomain after www. It is useful when database names follow the tenant or subdomain convention, but it is not a universal match. For example, if the incoming host is acme.example.com, the pattern expects the relevant subdomain-derived database name to be acme. A database named acme_production will not match that exact pattern without a different expression.
Rank #3
- [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
- [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
- [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
- [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
- [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
Anchor the expression deliberately. The ^ and $ characters mean the complete candidate name must match, preventing accidental partial matches. If your naming scheme does not map cleanly to hostnames, use an explicit expression that reflects the real database names, or set db_name for a single-database deployment.
Make db_name and the filter agree
For a server that should serve one database, set the database name explicitly and make sure the filter or hostname rule selects that same database. For example:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
[options]
db_name = acme_production
dbfilter = ^acme_production$
The exact database name above is an example; use the name returned by PostgreSQL on your server. If db_name points to a database that does not exist, or if the regular expression excludes it, Odoo can present an empty or unusable login choice even though PostgreSQL is healthy.
Test the expression against the hostname Odoo actually receives
Do not test only the browser’s address. A reverse proxy may terminate TLS, rewrite the host or forward a different value. Compare the proxy’s forwarded host with the hostname your regular expression expects. Test each public name, including whether it includes www, an environment prefix, a port or a tenant subdomain.
For every hostname, write down the expected database and check these conditions:
- The hostname reaches the intended Odoo instance.
- The database name matches the expression exactly, including hyphens, underscores and letter case.
- The database exists and the Odoo PostgreSQL role can connect to it.
- No second database also matches the expression when only one should be exposed.
Enable proxy mode when a reverse proxy is in front
When Odoo sits behind a reverse proxy, set:
proxy_mode = True
Restart Odoo after changing it. Proxy mode lets Odoo use the forwarded request information expected in a proxied deployment. It does not repair a typo in dbfilter; the regular expression still has to match the hostname delivered through the proxy chain.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteRank #4
- Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
- Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
- All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
- Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
- Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
Why the page still lists every database
Check these common causes in order:
- The option is spelled
db_filterinstead ofdbfilter. - The service loaded a different configuration file than the one you edited.
- The expression is too broad, lacks anchors, or matches more database names than intended.
- The reverse proxy passes a host different from the one used when writing the expression.
- Odoo was not restarted after the configuration change.
list_dbis still enabled and the filter does not narrow the result to the intended database.
Change one item at a time and retest in a private browser window so an old session or cached redirect does not disguise the result.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Fix PostgreSQL “permission denied to create database”
Odoo creates databases through its PostgreSQL role. The role therefore needs the PostgreSQL CREATEDB attribute. Without it, Odoo can connect to PostgreSQL yet fail when the database manager requests a new database.
Inspect the current role
Connect with an administrative PostgreSQL account and run:
Recommended Free Tools
du
Find the role used by Odoo and inspect its attributes. You are looking for Create DB or CREATEDB. Also verify that the role has login capability and that Odoo’s configured password corresponds to that role.
Grant CREATEDB directly
Run the following SQL as the PostgreSQL administrator or another role allowed to alter roles:
ALTER USER odoo WITH CREATEDB;
The command changes the role named odoo; substitute the actual Odoo role name if your installation uses another name. The change takes effect at the PostgreSQL role level. Restarting Odoo is generally unnecessary for the privilege change itself, although restarting can be useful if you are also changing Odoo’s connection settings.
Best Value
PostgreSQL’s role documentation treats CREATEDB as a role attribute. It is not safely assumed through membership in another role, so grant it directly to the role Odoo uses. Verify again with du after the change.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsCreate a correctly scoped role during installation
ArchWiki’s example creates a login role that can create databases without granting superuser or role-creation powers:
createuser odoo --createdb --login --no-superuser --no-createrole --pwprompt
Enter a strong password when prompted, then use the same role name and password in Odoo’s PostgreSQL connection settings. This is preferable to making the role a superuser solely to get database creation working.
Why superuser is usually not the first fix
Older Odoo documentation described the PostgreSQL role as a superuser, but community installation reports show Odoo working with the database-creation permission alone. Grant superuser only if a specific, documented operation in your release demonstrably requires it and you have assessed the security impact. For the reported create-database error, direct CREATEDB is the focused correction.
Check for errors that look like a permission problem
- If
dushowsCREATEDBbut the error remains, confirm Odoo is connecting as the role you inspected rather than a similarly named role. - Check that the PostgreSQL server receiving the connection is the one you changed; containers and remote database hosts can make multiple PostgreSQL instances appear identical.
- Review PostgreSQL and Odoo logs for authentication failures, connection limits or a failed transaction before assuming the role attribute was ignored.
- Ensure the role name in the Odoo configuration has no trailing spaces or quoting mistake.
Recommended troubleshooting sequence
Use this order to avoid masking one problem with another:
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →- Secure and verify the master password. Confirm
admin_passwdis a non-default value in the active configuration and restart Odoo. - Correct database selection. Spell
dbfilterexactly, test its regular expression against the hostname Odoo receives, and align it withdb_name. - Verify PostgreSQL privileges. Run
duand grantCREATEDBdirectly to the Odoo role if it is missing. - Retest through the real entry point. Use the public hostname and reverse proxy, not only a direct backend URL.
- Disable listing once routing works. Set
list_db = Falseor start Odoo with--no-database-listafter confirming that each hostname selects exactly one intended database.
Failure branches and recovery decisions
The manager opens but every action says the password is wrong
Replace admin_passwd in the active file, restart Odoo and verify which process owns the listening port. If multiple Odoo instances exist, stop the unintended one or edit the configuration used by the process receiving the request.
The login page is empty after setting list_db = False
Re-enable listing temporarily or start without --no-database-list, then confirm that db_name names an existing database and that dbfilter matches it for the public hostname. Restore list_db = False only after a direct login succeeds.
A tenant sees another tenant’s database
Tighten the regular expression with anchors, check the exact host forwarded by the proxy, and ensure database names do not share an unintended pattern. Do not hide the symptom by merely turning off listing; access control must select the correct database before disabling the manager.
Database creation still fails after granting CREATEDB
Confirm the grant was applied to the exact login role Odoo uses, on the correct PostgreSQL instance. Then inspect logs for authentication, connection or storage errors. A successful role grant cannot fix a wrong password, a different database server, or a full or unavailable PostgreSQL instance.
Free tools Windows power users keep installed
One-click scans. No signup required.
Quick Recap
Operational checklist for a self-hosted Odoo server
- Store the random
admin_passwdin your password manager and restrict read access to the Odoo configuration. - Document the mapping from each public hostname to its database name and regular-expression rule.
- Keep
proxy_mode = Trueconsistent with the actual reverse-proxy architecture. - Use a dedicated PostgreSQL login role with
CREATEDBbut without superuser or role-creation privileges unless a proven requirement exists. - After upgrades, recheck option names and defaults against the Odoo release documentation, especially if a package replaces the configuration file.
- Test a backup restore separately from the database manager so a password or filtering fix is not mistaken for a verified recovery plan.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

