OperationalError: (1045, "Access denied for user '_92d740dc4a0a2b37'@'172.18.0.5'

Subject: Assistance Needed with Access Error on Custom Site (Irfan.cabs)

Dear Frappe Community,

I am encountering an issue with my custom site, Irfan.cabs, while using Frappe on GitHub Codespaces. After creating the site and installing the application, I have been unable to access it. The error message indicates an “access denied” issue, specifically:

OperationalError: pymysql.err.OperationalError: (1045, “Access denied for user ‘_92d740dc4a0a2b37’@‘172.18.0.5’ (using password: YES)”)

File “/workspace/frappe-bench/apps/frappe/frappe/app.py”, line 99, in application
init_request(request)
^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/app.py”, line 204, in init_request
frappe.local.http_request = HTTPRequest()
^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/auth.py”, line 42, in init
self.set_session()
^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/auth.py”, line 76, in set_session
frappe.local.login_manager = LoginManager()
^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/auth.py”, line 118, in init
self.make_session(resume=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/auth.py”, line 208, in make_session
frappe.local.session_obj = Session(

File “/workspace/frappe-bench/apps/frappe/frappe/sessions.py”, line 220, in init
self.resume()
^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/sessions.py”, line 299, in resume
data = self.get_session_record()
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/sessions.py”, line 317, in get_session_record
r = self.get_session_data()
^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/sessions.py”, line 334, in get_session_data
data = self.get_session_data_from_db()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/sessions.py”, line 362, in get_session_data_from_db
.where(sessions.lastupdate > get_expired_threshold())
^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/sessions.py”, line 446, in get_expired_threshold
now = frappe.utils.now()
^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/utils/data.py”, line 406, in now
return now_datetime().strftime(DATETIME_FORMAT)
^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/utils/data.py”, line 353, in now_datetime
dt = convert_utc_to_system_timezone(datetime.datetime.now(pytz.UTC))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/utils/data.py”, line 393, in convert_utc_to_system_timezone
time_zone = get_system_timezone()
^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/utils/data.py”, line 371, in get_system_timezone
return frappe.get_system_settings(“time_zone”) or “Asia/Kolkata” # Default to India ?!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/init.py”, line 2452, in get_system_settings
local.system_settings = get_cached_doc(“System Settings”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/init.py”, line 1270, in get_cached_doc
doc = get_doc(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/init.py”, line 1396, in get_doc
doc = frappe.model.document.get_doc(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/model/utils/init.py”, line 174, in wrapper
return dispatch(args[0])(args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/model/document.py”, line 82, in get_doc_str
controller = get_controller(doctype)
^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/model/base_document.py”, line 67, in get_controller
return import_controller(doctype)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/model/base_document.py”, line 82, in import_controller
doctype_info = frappe.db.get_value(“DocType”, doctype, fieldname="
“)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 523, in get_value
result = self.get_values(
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 627, in get_values
out = self._get_values_from_table(
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 900, in _get_values_from_table
return query.run(as_dict=as_dict, debug=debug, update=update, run=run, pluck=pluck)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/query_builder/utils.py”, line 84, in execute_query
result = frappe.db.sql(query, params, *args, **kwargs) # nosemgrep
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 212, in sql
self.connect()
^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 117, in connect
self._conn: “MariadbConnection” | “PostgresConnection” = self.get_connection()
^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/mariadb/database.py”, line 107, in get_connection
conn = self._get_connection()
^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/mariadb/database.py”, line 113, in _get_connection
return self.create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/mariadb/database.py”, line 116, in create_connection
return pymysql.connect(**self.get_connection_settings())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/connections.py”, line 361, in init
self.connect()
^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/connections.py”, line 669, in connect
self._request_authentication()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/connections.py”, line 957, in _request_authentication
auth_packet = self._read_packet()
^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/connections.py”, line 775, in _read_packet
packet.raise_for_error()
^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/protocol.py”, line 219, in raise_for_error
err.raise_mysql_exception(self._data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/err.py”, line 150, in raise_mysql_exception
raise errorclass(errno, errval)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
During handling of the above exception, another exception occurred:
File “/workspace/frappe-bench/apps/frappe/frappe/middlewares.py”, line 16, in call
return super().call(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/werkzeug/middleware/shared_data.py”, line 249, in call
return self.app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/werkzeug/middleware/shared_data.py”, line 249, in call
return self.app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/app.py”, line 79, in application
app(environ, start_response),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/werkzeug/wrappers/request.py”, line 190, in application
resp = f(*args[:-2] + (request,))
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/app.py”, line 136, in application
response = handle_exception(e)
^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/app.py”, line 350, in handle_exception
allow_traceback = frappe.get_system_settings(“allow_error_traceback”) if frappe.db else False
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/init.py”, line 2452, in get_system_settings
local.system_settings = get_cached_doc(“System Settings”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/init.py”, line 1270, in get_cached_doc
doc = get_doc(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/init.py”, line 1396, in get_doc
doc = frappe.model.document.get_doc(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/model/utils/init.py”, line 174, in wrapper
return dispatch(args[0])(args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/model/document.py”, line 82, in get_doc_str
controller = get_controller(doctype)
^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/model/base_document.py”, line 67, in get_controller
return import_controller(doctype)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/model/base_document.py”, line 82, in import_controller
doctype_info = frappe.db.get_value(“DocType”, doctype, fieldname="
”)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 523, in get_value
result = self.get_values(
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 627, in get_values
out = self._get_values_from_table(
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 900, in _get_values_from_table
return query.run(as_dict=as_dict, debug=debug, update=update, run=run, pluck=pluck)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/query_builder/utils.py”, line 84, in execute_query
result = frappe.db.sql(query, params, *args, **kwargs) # nosemgrep
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 212, in sql
self.connect()
^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/database.py”, line 117, in connect
self._conn: “MariadbConnection” | “PostgresConnection” = self.get_connection()
^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/mariadb/database.py”, line 107, in get_connection
conn = self._get_connection()
^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/mariadb/database.py”, line 113, in _get_connection
return self.create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/apps/frappe/frappe/database/mariadb/database.py”, line 116, in create_connection
return pymysql.connect(**self.get_connection_settings())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/connections.py”, line 361, in init
self.connect()
^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/connections.py”, line 669, in connect
self._request_authentication()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/connections.py”, line 957, in _request_authentication
auth_packet = self._read_packet()
^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/connections.py”, line 775, in _read_packet
packet.raise_for_error()
^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/protocol.py”, line 219, in raise_for_error
err.raise_mysql_exception(self._data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/workspace/frappe-bench/env/lib/python3.11/site-packages/pymysql/err.py”, line 150, in raise_mysql_exception
raise errorclass(errno, errval)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pymysql.err.OperationalError: (1045, “Access denied for user ‘_92d740dc4a0a2b37’@‘172.18.0.5’ (using password: YES)”)

Details:
Site Configuration (Irfan.cabs):

{
“db_name”: “_92d740dc4a0a2b37”,
“db_password”: “HUnpSSxKWZ79PbEU”,
“db_type”: “mariadb”,
“db_user”: “_92d740dc4a0a2b37”
}
Working Site Configuration (dev.localhost):

{
“db_name”: “_0927c2081280d4b8”,
“db_password”: “W2QNsYSQza2YamvX”,
“db_type”: “mariadb”,
“db_user”: “_0927c2081280d4b8”,
“developer_mode”: 1
}
Common Config:

{
“background_workers”: 1,
“db_host”: “mariadb”,
“default_site”: “Irfan.cabs”,
“file_watcher_port”: 6787,
“frappe_user”: “frappe”,
“gunicorn_workers”: 5,
“live_reload”: true,
“rebase_on_pull”: false,
“redis_cache”: “redis://redis-cache:6379”,
“redis_queue”: “redis://redis-queue:6379”,
“redis_socketio”: “redis://redis-socketio:6379”,
“restart_supervisor_on_update”: false,
“restart_systemd_on_update”: false,
“serve_default_site”: true,
“shallow_clone”: true,
“socketio_port”: 9000,
“use_redis_auth”: false,
“webserver_port”: 8000
}

Context:
This is not the first time I have faced this issue. I successfully completed a project on dev.localhost without any issues, but I am currently unable to access my custom site, Irfan.cabs. I have verified the configurations for both sites, and they seem correct. It appears that I can only create applications and conduct testing on dev.localhost, while my custom site is not functioning properly.

I have searched extensively for solutions regarding the configuration files for both dev.localhost and Irfan.cabs, but have been unable to resolve the access error.

Could you please assist me in troubleshooting this issue? I would appreciate any insights or suggestions you might have.

Thank you for your help!

Best regards,
shad

Check this frappe_docker/docs/troubleshoot.md at main · frappe/frappe_docker · GitHub

Make sure there’s no user {db_name}@xx.ip.ad.dr, only user that should exist if {db_name}@%