# Could not create tables: (MySQLdb.\_exceptions.OperationalError | MySQL tracker store

**URL:** <https://forum.rasa.com/t/could-not-create-tables-mysqldb-exceptions-operationalerror-mysql-tracker-store/14419>\
**Category:** Rasa Open Source\
**Created:** [August 16, 2019, 1:57pm UTC](https://forum.rasa.com/t/could-not-create-tables-mysqldb-exceptions-operationalerror-mysql-tracker-store/14419 "2019-08-16T13:57:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![saideep-g](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/saideep-g/32/4518_2.png) [@saideep-g](https://forum.rasa.com/u/saideep-g)\
**Post date:** [August 16, 2019, 1:57pm UTC](https://forum.rasa.com/t/could-not-create-tables-mysqldb-exceptions-operationalerror-mysql-tracker-store/14419/1 "2019-08-16T13:57:46Z")

</div>

Encountering below error when starting rasa server using `docker-compose up`:

`*rasa.core.tracker_store - Could not create tables: (MySQLdb._exceptions.OperationalError) (1045, "Access denied for user 'root'@'172.18.0.3' (using password: NO)")*`

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/rasa/original/2X/0/0f6d59a1fe8ad4675c157f2f302871a0476811bb.png)Relevant portion of docker-compose.yml

```
  mysql:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - .data/mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: rasa

```

Relevant portion of endpoints.yml

```
tracker_store:
    type: SQL
    dialect: "mysql" # the dialect used to interact with the db
    url: "mysql://mysql:3306" # (optional) host of the sql db
    db: rasa # path to your db
    username: root # username used for authentication
    password: example # password used for authentication

```

---

<div class="post-metadata">

**Author:** ![saideep-g](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/saideep-g/32/4518_2.png) [@saideep-g](https://forum.rasa.com/u/saideep-g)\
**Post date:** [August 17, 2019, 2:24am UTC](https://forum.rasa.com/t/could-not-create-tables-mysqldb-exceptions-operationalerror-mysql-tracker-store/14419/2 "2019-08-17T02:24:54Z")

</div>

There were two problems:

1. My docker was creating a root user without password in MySQL
2. Rasa was not using the password provided in the endpoints.yml

I forced docker to create root user with password by editing `docker-compose.yml` :

```
  mysql:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - .data/mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_ALLOW_EMPTY_PASSWORD: "No"
      MYSQL_DATABASE: rasa

```

I made below edits in `endpoints.yml` to use the password provided:

```
tracker_store:
    type: SQL
    dialect: "mysql" # the dialect used to interact with the db
    url: "mysql://root:example@mysql:3306/rasa" # (optional) host of the sql db
    #db: rasa # path to your db
    #username: rasa # username used for authentication
    #password: welcome # password used for authentication

```

After above two changes, rasa was successfully connecting to MySQL:

 ![image](https://europe1.discourse-cdn.com/flex013/uploads/rasa/original/2X/d/dae2bb02ecf009650290dc62b1784d706e2f5f3d.png)

---

<div class="post-metadata">

**Author:** ![saideep-g](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.rasa.com/saideep-g/32/4518_2.png) [@saideep-g](https://forum.rasa.com/u/saideep-g)\
**Post date:** [August 17, 2019, 3:05am UTC](https://forum.rasa.com/t/could-not-create-tables-mysqldb-exceptions-operationalerror-mysql-tracker-store/14419/4 "2019-08-17T03:05:11Z")

</div>

Logged a bug for this:

> <https://github.com/RasaHQ/rasa/issues/4270>
>
> \<!-- THIS INFORMATION IS MANDATORY - YOUR ISSUE WILL BE CLOSED IF IT IS MISSING.… If you don't know your Rasa version, use \`rasa --version\`. 
> Please format any code or console output with three ticks \`\`\` above and below.
> If you are asking a usage question (e.g. "How do I do xyz") please post your question on https://forum.rasa.com instead --\>
> 
> \*\*Rasa version\*\*:
> version": "1.2.2
> \*\*Rasa X version\*\* (if used & relevant):
> NA
> \*\*Python version\*\*:
> python 3.6 (using the docker image: rasa/rasa:latest)
> 
> \*\*Operating system\*\* (windows, osx, ...):
> Docker image: rasa/rasa:latest
> host: windows 10
> 
> \*\*Issue\*\*:
> When connecting to the MySQL tracker store, the user name and password provided in endpoints.yml is not used.
> 
> 
> \*\*Error (including full traceback)\*\*:
> \`\`\`
> rasa\_1 | 2019-08-17 02:32:24 DEBUG rasa.core.tracker\_store - Connection to SQL database 'rasa' successful
> rasa\_1 | 2019-08-17 02:32:24 DEBUG rasa.core.tracker\_store - Connected to SQLTrackerStore.
> rasa\_1 | 2019-08-17 02:32:24 DEBUG rasa.model - Extracted model to '/tmp/tmpdydl3z2r'.
> rasa\_1 | 2019-08-17 02:32:24 DEBUG pykwalify.compat - Using yaml library: /usr/local/lib/python3.6/site-packages/ruamel/yaml/\_\_init\_\_.py
> rasa\_1 | 2019-08-17 02:32:44 DEBUG rasa.core.agent - Created a new lock for conversation 'default'
> rasa\_1 | 2019-08-17 02:32:44 DEBUG rasa.core.agent - Deleted lock for conversation 'default' (unused)
> rasa\_1 | 2019-08-17 02:32:44 ERROR rasa.core.channels.channel - An exception occured while handling user message '\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*intentionally masked\*\*\*\*\*\*\*\*\*\*\*'.
> rasa\_1 | Traceback (most recent call last):
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2265, in \_wrap\_pool\_connect
> rasa\_1 | return fn()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 363, in connect
> rasa\_1 | return \_ConnectionFairy.\_checkout(self)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 760, in \_checkout
> rasa\_1 | fairy = \_ConnectionRecord.checkout(pool)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 492, in checkout
> rasa\_1 | rec = pool.\_do\_get()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/impl.py", line 139, in \_do\_get
> rasa\_1 | self.\_dec\_overflow()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 68, in \_\_exit\_\_
> rasa\_1 | compat.reraise(exc\_type, exc\_value, exc\_tb)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 153, in reraise
> rasa\_1 | raise value
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/impl.py", line 136, in \_do\_get
> rasa\_1 | return self.\_create\_connection()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 308, in \_create\_connection
> rasa\_1 | return \_ConnectionRecord(self)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 437, in \_\_init\_\_
> rasa\_1 | self.\_\_connect(first\_connect\_check=True)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 639, in \_\_connect
> rasa\_1 | connection = pool.\_invoke\_creator(self)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py", line 114, in connect
> rasa\_1 | return dialect.connect(\*cargs, \*\*cparams)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 453, in connect
> rasa\_1 | return self.dbapi.connect(\*cargs, \*\*cparams)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/MySQLdb/\_\_init\_\_.py", line 84, in Connect
> rasa\_1 | return Connection(\*args, \*\*kwargs)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/MySQLdb/connections.py", line 166, in \_\_init\_\_
> rasa\_1 | super(Connection, self).\_\_init\_\_(\*args, \*\*kwargs2)
> rasa\_1 | MySQLdb.\_exceptions.OperationalError: (1045, "Access denied for user 'root'@'172.18.0.4' (using password: NO)")
> rasa\_1 |
> rasa\_1 | The above exception was the direct cause of the following exception:
> rasa\_1 |
> rasa\_1 | Traceback (most recent call last):
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/channels/channel.py", line 490, in receive
> rasa\_1 | text, collector, sender\_id, input\_channel=input\_channel
> rasa\_1 | File "/usr/local/lib/python3.6/asyncio/coroutines.py", line 110, in \_\_next\_\_
> rasa\_1 | return self.gen.send(None)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/channels/channel.py", line 80, in handler
> rasa\_1 | await app.agent.handle\_message(\*args, \*\*kwargs)
> rasa\_1 | File "/usr/local/lib/python3.6/asyncio/coroutines.py", line 110, in \_\_next\_\_
> rasa\_1 | return self.gen.send(None)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/agent.py", line 491, in handle\_message
> rasa\_1 | return await processor.handle\_message(message)
> rasa\_1 | File "/usr/local/lib/python3.6/asyncio/coroutines.py", line 110, in \_\_next\_\_
> rasa\_1 | return self.gen.send(None)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 80, in handle\_message
> rasa\_1 | tracker = await self.log\_message(message)
> rasa\_1 | File "/usr/local/lib/python3.6/asyncio/coroutines.py", line 110, in \_\_next\_\_
> rasa\_1 | return self.gen.send(None)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 132, in log\_message
> rasa\_1 | tracker = self.\_get\_tracker(message.sender\_id)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/processor.py", line 532, in \_get\_tracker
> rasa\_1 | return self.tracker\_store.get\_or\_create\_tracker(sender\_id)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/tracker\_store.py", line 73, in get\_or\_create\_tracker
> rasa\_1 | tracker = self.retrieve(sender\_id)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/rasa/core/tracker\_store.py", line 450, in retrieve
> rasa\_1 | result = query.filter\_by(sender\_id=sender\_id).all()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3174, in all
> rasa\_1 | return list(self)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3330, in \_\_iter\_\_
> rasa\_1 | return self.\_execute\_and\_instances(context)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3352, in \_execute\_and\_instances
> rasa\_1 | querycontext, self.\_connection\_from\_session, close\_with\_result=True
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3367, in \_get\_bind\_args
> rasa\_1 | mapper=self.\_bind\_mapper(), clause=querycontext.statement, \*\*kw
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/query.py", line 3345, in \_connection\_from\_session
> rasa\_1 | conn = self.session.connection(\*\*kw)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 1124, in connection
> rasa\_1 | execution\_options=execution\_options,
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 1130, in \_connection\_for\_bind
> rasa\_1 | engine, execution\_options
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 431, in \_connection\_for\_bind
> rasa\_1 | conn = bind.\_contextual\_connect()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2229, in \_contextual\_connect
> rasa\_1 | self.\_wrap\_pool\_connect(self.pool.connect, None),
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2269, in \_wrap\_pool\_connect
> rasa\_1 | e, dialect, self
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1536, in \_handle\_dbapi\_exception\_noconnection
> rasa\_1 | util.raise\_from\_cause(sqlalchemy\_exception, exc\_info)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 398, in raise\_from\_cause
> rasa\_1 | reraise(type(exception), exception, tb=exc\_tb, cause=cause)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 152, in reraise
> rasa\_1 | raise value.with\_traceback(tb)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2265, in \_wrap\_pool\_connect
> rasa\_1 | return fn()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 363, in connect
> rasa\_1 | return \_ConnectionFairy.\_checkout(self)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 760, in \_checkout
> rasa\_1 | fairy = \_ConnectionRecord.checkout(pool)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 492, in checkout
> rasa\_1 | rec = pool.\_do\_get()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/impl.py", line 139, in \_do\_get
> rasa\_1 | self.\_dec\_overflow()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 68, in \_\_exit\_\_
> rasa\_1 | compat.reraise(exc\_type, exc\_value, exc\_tb)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 153, in reraise
> rasa\_1 | raise value
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/impl.py", line 136, in \_do\_get
> rasa\_1 | return self.\_create\_connection()
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 308, in \_create\_connection
> rasa\_1 | return \_ConnectionRecord(self)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 437, in \_\_init\_\_
> rasa\_1 | self.\_\_connect(first\_connect\_check=True)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/pool/base.py", line 639, in \_\_connect
> rasa\_1 | connection = pool.\_invoke\_creator(self)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/strategies.py", line 114, in connect
> rasa\_1 | return dialect.connect(\*cargs, \*\*cparams)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 453, in connect
> rasa\_1 | return self.dbapi.connect(\*cargs, \*\*cparams)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/MySQLdb/\_\_init\_\_.py", line 84, in Connect
> rasa\_1 | return Connection(\*args, \*\*kwargs)
> rasa\_1 | File "/usr/local/lib/python3.6/site-packages/MySQLdb/connections.py", line 166, in \_\_init\_\_
> rasa\_1 | super(Connection, self).\_\_init\_\_(\*args, \*\*kwargs2)
> rasa\_1 | sqlalchemy.exc.OperationalError: (MySQLdb.\_exceptions.OperationalError) (1045, "Access denied for user 'root'@'172.18.0.4' (using password: NO)")
> rasa\_1 | (Background on this error at: http://sqlalche.me/e/e3q8)
> 
> \`\`\`
> 
> \*\*Command or request that led to error\*\*:
> \`\`\`
> docker-compose up and then sending a API request to below URL with 'message' and 'sending' in json format:
> localhost:5005/webhooks/rest/webhook
> \`\`\`
> 
> \*\*Content of configuration file (config.yml)\*\* (if relevant):
> \`\`\`yml
> Not Relevant
> \`\`\`
> 
> \*\*Content of domain file (domain.yml)\*\* (if relevant):
> \`\`\`yml
> not relevant
> \`\`\`
> \*\*docker-compose: (relevant portion)\*\*
> \`\`\`
> mysql:
> image: mysql
> command: --default-authentication-plugin=mysql\_native\_password
> volumes:
> - .data/mysql:/var/lib/mysql
> restart: always
> environment:
> MYSQL\_ROOT\_PASSWORD: example
> MYSQL\_ALLOW\_EMPTY\_PASSWORD: "No"
> MYSQL\_DATABASE: rasa
> \`\`\`
> \*\*tracker store: (relevant portion)\*\*
> \`\`\`
> tracker\_store:
> type: SQL
> dialect: "mysql" # the dialect used to interact with the db
> #url: "mysql://root:example@mysql:3306/rasa" # (optional) host of the sql db
> url: "mysql://mysql:3306"
> db: rasa # path to your db
> username: root # username used for authentication
> password: example # password used for authentication
> \`\`\`
> see the below post to understand the alternative used to overcome this issue but to maintain consistency, rasa should be able to handle this.
> https://forum.rasa.com/t/could-not-create-tables-mysqldb-exceptions-operationalerror-mysql-tracker-store/14419
