{"version":3,"sources":["webpack:///./src/pages/docs/Connecting to Databases/docker-add-drivers.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","parentName","isMDXComponent"],"mappings":"wPAQaA,G,UAAe,S,+OAC5B,IAAMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAG5E,iBAAQ,CACN,GAAM,yCADR,yCAGA,sLACuD,0BAAYC,WAAW,KAAvB,kBADvD,6CAGF,6BAAGA,WAAW,KAAQ,CAChB,KAAQ,oEADd,oBAHE,SAMF,6BAAGA,WAAW,KAAQ,CAChB,KAAQ,wEADd,wBANE,sCAUA,mRAGA,iBAAQ,CACN,GAAM,mCADR,oCAGA,yDAAwC,6BAAGA,WAAW,KAAQ,CAC1D,KAAQ,gDAD4B,mBAAxC,oBAGA,iHACA,iBAAQ,CACN,GAAM,0BADR,2BAGA,qFAAoE,0BAAYA,WAAW,KAAvB,kBAApE,2BACF,0BAAYA,WAAW,KAAvB,2BADE,0GAGA,+DAA8C,0BAAYA,WAAW,KAAvB,kBAA9C,uKAGA,+BAAc,0BAAYA,WAAW,KAAvB,2BACd,uBAAK,gCAAMA,WAAW,OAAU,IAA3B,qEAGL,+DACA,uBAAK,gCAAMA,WAAW,OAAU,IAA3B,4DAEL,+EACA,uBAAK,gCAAMA,WAAW,OAAU,IAA3B,sCAEL,gGACA,uBAAK,gCAAMA,WAAW,OAAU,IAA3B,wBAEL,iBAAQ,CACN,GAAM,sBADR,uBAGA,iHACA,oVAIA,qDACA,uBAAK,gCAAMA,WAAW,OAAU,IAA3B,yEAEL,mDACA,uBAAK,gCAAMA,WAAW,OAAU,IAA3B,4FAEL,+KAEA,yH,6OAKJJ,EAAWK,gBAAiB","file":"component---src-pages-docs-connecting-to-databases-docker-add-drivers-mdx-ba3dc22f4ac0faa66a35.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/srinify/Documents/superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n\n\n    <h2 {...{\n      \"id\": \"adding-new-database-drivers-in-docker\"\n    }}>{`Adding New Database Drivers in Docker`}</h2>\n    <p>{`Superset requires a Python database driver to be installed for each additional type of database you\nwant to connect to. When setting up Superset locally via `}<inlineCode parentName=\"p\">{`docker-compose`}</inlineCode>{`, the drivers and packages\ncontained in\n`}<a parentName=\"p\" {...{\n        \"href\": \"https://github.com/apache/superset/blob/master/requirements.txt\"\n      }}>{`requirements.txt`}</a>{` and\n`}<a parentName=\"p\" {...{\n        \"href\": \"https://github.com/apache/superset/blob/master/requirements-dev.txt\"\n      }}>{`requirements-dev.txt`}</a>{`\nwill be installed automatically.`}</p>\n    <p>{`In this section, we'll walk through how to install the MySQL connector library. The connector\nlibrary installation process is the same for all additional libraries and we'll end this section\nwith the recommended connector library for each database.`}</p>\n    <h3 {...{\n      \"id\": \"1-determine-the-driver-you-need\"\n    }}>{`1. Determine the driver you need`}</h3>\n    <p>{`To figure out how to install the `}<a parentName=\"p\" {...{\n        \"href\": \"/docs/databases/installing-database-drivers\"\n      }}>{`database driver`}</a>{` of your choice.`}</p>\n    <p>{`In the example, we'll walk through the process of installing a MySQL driver in Superset.`}</p>\n    <h3 {...{\n      \"id\": \"2-install-mysql-driver\"\n    }}>{`2. Install MySQL Driver`}</h3>\n    <p>{`As we are currently running inside of a Docker container via `}<inlineCode parentName=\"p\">{`docker compose`}</inlineCode>{`, we cannot simply run\n`}<inlineCode parentName=\"p\">{`pip install mysqlclient`}</inlineCode>{` on our local shell and expect the drivers to be installed within the\nDocker containers for superset.`}</p>\n    <p>{`In order to address this, the Superset `}<inlineCode parentName=\"p\">{`docker compose`}</inlineCode>{` setup comes with a mechanism for you to\ninstall packages locally, which will be ignored by Git for the purposes of local development. Please\nfollow these steps:`}</p>\n    <p>{`Create `}<inlineCode parentName=\"p\">{`requirements-local.txt`}</inlineCode></p>\n    <pre><code parentName=\"pre\" {...{}}>{`# From the repo root...\ntouch ./docker/requirements-local.txt\n`}</code></pre>\n    <p>{`Add the driver selected in step above:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`echo \"mysqlclient\" >> ./docker/requirements-local.txt\n`}</code></pre>\n    <p>{`Rebuild your local image with the new driver baked in:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`docker-compose build --force-rm\n`}</code></pre>\n    <p>{`After the rebuild is complete, which make take a few minutes, relaunch:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`docker-compose up\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"3-connect-to-mysql\"\n    }}>{`3. Connect to MySQL`}</h3>\n    <p>{`Now that you've got a MySQL driver installed locally, you should be able to test it out.`}</p>\n    <p>{`We can now create a Datasource in Superset that can be used to connect to a MySQL instance. Assuming\nyour MySQL instance is running locally and can be accessed via localhost, use the following\nconnection string in “SQL Alchemy URI”, by going to Sources > Databases > + icon (to add a new\ndatasource) in Superset.`}</p>\n    <p>{`For Docker running in Linux:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`mysql://mysqluser:mysqluserpassword@localhost/example?charset=utf8\n`}</code></pre>\n    <p>{`For Docker running in OSX:`}</p>\n    <pre><code parentName=\"pre\" {...{}}>{`mysql://mysqluser:mysqluserpassword@docker.for.mac.host.internal/example?charset=utf8\n`}</code></pre>\n    <p>{`Then click “Test Connection”, which should give you an “OK” message. If not, please look at your\nterminal for error messages, and reach out for help.`}</p>\n    <p>{`You can repeat this process for every database you want superset to be able to connect to.`}</p>\n\n    </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}