pachico opened a new issue #8963: ClickHouse driver: user/pass are ignored 
therefore connection fails
URL: https://github.com/apache/incubator-superset/issues/8963
 
 
   I am trying to connect to a ClickHouse cluster using your docker-compose 
based installation but once I add it as a new database it fails complaining
   ```
   ERROR:root:Code: 194, e.displayText() = DB::Exception: Password required for 
user default (version 19.17.5.18 (official build))
   ```
   although it is set in URI.
   
   **How to reproduce it:**
   I have appended `sqlalchemy-clickhouse` to the end of 
`requirements-eextra.txt` and run `docker-compose up`.
   In `add database` form I set 
`clickhouse://user:pass@clickhousehost:8123/mydb` (obviously redacted here) and 
when pressing `test connection` I get a message in a popup:
   
   ```
   ERROR: {"error": "Connection failed!\n\nThe error message returned 
was:\nCode: 194, e.displayText() = DB::Exception: Password required for user 
default (version 19.17.5.18 (official build))\n", "stacktrace": "Traceback 
(most recent call last):\n  File \"/app/superset/views/core.py\", line 1511, in 
testconn\n    with closing(engine.connect()) as conn:\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 
2196, in connect\n    return self._connection_cls(self, **kwargs)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 103, 
in __init__\n    else engine.raw_connection()\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 
2296, in raw_connection\n    self.pool.unique_connection, _connection\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py\", line 
2265, in _wrap_pool_connect\n    return fn()\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 303, 
in unique_connection\n    return _ConnectionFairy._checkout(self)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 760, 
in _checkout\n    fairy = _ConnectionRecord.checkout(pool)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 492, 
in checkout\n    rec = pool._do_get()\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/impl.py\", line 238, 
in _do_get\n    return self._create_connection()\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 308, 
in _create_connection\n    return _ConnectionRecord(self)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 437, 
in __init__\n    self.__connect(first_connect_check=True)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py\", line 639, 
in __connect\n    connection = pool._invoke_creator(self)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py\", 
line 114, in connect\n    return dialect.connect(*cargs, **cparams)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/default.py\", line 
453, in connect\n    return self.dbapi.connect(*cargs, **cparams)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy_clickhouse/connector.py\", 
line 111, in connect\n    return Connection(*args, **kwargs)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy_clickhouse/connector.py\", 
line 118, in __init__\n    super(Connection, self).__init__(db_name, db_url, 
username, password, readonly)\n  File 
\"/usr/local/lib/python3.6/site-packages/infi/clickhouse_orm/database.py\", 
line 112, in __init__\n    self.db_exists = self._is_existing_database()\n  
File 
\"/usr/local/lib/python3.6/site-packages/infi/clickhouse_orm/database.py\", 
line 393, in _is_existing_database\n    r = self._send(\"SELECT count() FROM 
system.databases WHERE name = '%s'\" % self.db_name)\n  File 
\"/usr/local/lib/python3.6/site-packages/sqlalchemy_clickhouse/connector.py\", 
line 102, in _send\n    raise Exception(r.text)\nException: Code: 194, 
e.displayText() = DB::Exception: Password required for user default (version 
19.17.5.18 (official build))\n\n"}
   ```
   
   and logs output
   ```
   superset_1         | INFO:root:Database.get_sqla_engine(). Masked URL: 
clickhouse:///user:pass@clickhousehost:8123/mydb
   superset_1         | DEBUG:urllib3.connectionpool:Starting new HTTP 
connection (1): clickhousehost:8123
   superset_1         | DEBUG:urllib3.connectionpool:http://clickhousehost:8123 
"POST / HTTP/1.1" 401 None
   superset_1         | ERROR:root:Code: 194, e.displayText() = DB::Exception: 
Password required for user default (version 19.17.5.18 (official build))
   superset_1         | Traceback (most recent call last):
   superset_1         |   File "/app/superset/views/core.py", line 1511, in 
testconn
   superset_1         |     with closing(engine.connect()) as conn:
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2196, 
in connect
   superset_1         |     return self._connection_cls(self, **kwargs)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 103, 
in __init__
   superset_1         |     else engine.raw_connection()
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2296, 
in raw_connection
   superset_1         |     self.pool.unique_connection, _connection
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2265, 
in _wrap_pool_connect
   superset_1         |     return fn()
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 303, in 
unique_connection
   superset_1         |     return _ConnectionFairy._checkout(self)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 760, in 
_checkout
   superset_1         |     fairy = _ConnectionRecord.checkout(pool)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 492, in 
checkout
   superset_1         |     rec = pool._do_get()
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/impl.py", line 238, in 
_do_get
   superset_1         |     return self._create_connection()
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 308, in 
_create_connection
   superset_1         |     return _ConnectionRecord(self)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 437, in 
__init__
   superset_1         |     self.__connect(first_connect_check=True)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 639, in 
__connect
   superset_1         |     connection = pool._invoke_creator(self)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py", line 
114, in connect
   superset_1         |     return dialect.connect(*cargs, **cparams)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 
453, in connect
   superset_1         |     return self.dbapi.connect(*cargs, **cparams)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy_clickhouse/connector.py", 
line 111, in connect
   superset_1         |     return Connection(*args, **kwargs)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy_clickhouse/connector.py", 
line 118, in __init__
   superset_1         |     super(Connection, self).__init__(db_name, db_url, 
username, password, readonly)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/infi/clickhouse_orm/database.py", line 
112, in __init__
   superset_1         |     self.db_exists = self._is_existing_database()
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/infi/clickhouse_orm/database.py", line 
393, in _is_existing_database
   superset_1         |     r = self._send("SELECT count() FROM 
system.databases WHERE name = '%s'" % self.db_name)
   superset_1         |   File 
"/usr/local/lib/python3.6/site-packages/sqlalchemy_clickhouse/connector.py", 
line 102, in _send
   superset_1         |     raise Exception(r.text)
   superset_1         | Exception: Code: 194, e.displayText() = DB::Exception: 
Password required for user default (version 19.17.5.18 (official build))
   superset_1         | 
   superset_1         | 172.20.0.1 - - [14/Jan/2020 12:48:15] "POST 
/superset/testconn HTTP/1.1" 500 -
   superset_1         | INFO:werkzeug:172.20.0.1 - - [14/Jan/2020 12:48:15] 
"POST /superset/testconn HTTP/1.1" 500 -
   ```
   
   It seems user and pass are ignored despite they are provided in URI.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to