Docker 的超集无法添加到外部 mysql 的连接
Superset with Docker cannot add connection to external mysql
我是使用 Ubuntu 的新手,我正在尝试安装 apache-superset
并通过直接 sudo docker pull apache/superset
使用 Docker 成功安装了它,但我卡在了将数据库连接器添加到 运行 超集
至于我的本地数据库,我正在使用 MySQL 并且我碰巧在本地主机中使用 SSH 隧道在服务器中访问它。所以我认为从 Docker 容器的角度来看,这一定是一个“外部”数据库
我尝试过的:
- 我从 pip3
安装了 mysqlclient
- 通过以下引用:https://devopsheaven.com/docker/devops/add-host/link/2017/10/04/connect-external-services-from-docker-container.html
我试着输入:sudo docker run -it mysql -h 192.168.100.1 -P 33063 -u czjovan --password=mypw cz_payment_merged
但后来我得到:
2021-03-04 11:34:53+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.23-1debian10 started.
2021-03-04 11:34:53+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld -h 192.168.100.1 -P 33063 -u czjovan --password=mypw cz_payment_merged --verbose --help --log-bin-index=/tmp/tmp.EV6L0jrspQ
2021-03-04T11:34:53.402148Z 0 [ERROR] [MY-010124] [Server] Fatal error: Can't change to run as user 'czjovan' ; Please check that the user exists!
2021-03-04T11:34:53.403355Z 0 [ERROR] [MY-010119] [Server] Aborting
- 也可以通过以下方式:From inside of a Docker container, how do I connect to the localhost of the machine?
我尝试输入:sudo docker run --rm it --network=host mysql mysql -h 127.0.0.1
但输入 error 2003 (hy000) can't connect to mysql server on 127.0.0.1
- 我尝试将 mysql 连接器添加到 sqlalchemy uri,但未找到驱动程序
我不是设置这些的专家,我缺乏Docker机制..如果有人愿意指导我如何逐步解决这个问题,我将不胜感激..
更新----------------------------------------- -----:
-> 在 Mustafa Guler 添加 -p 3306:3306
之后,mysql 容器现在启动..
但是我仍然无法在Superset中添加数据库,我该怎么办?
您需要定义用户并作为环境传递,以便在 mysql 容器启动期间创建新用户。也许问题出在用户身上并传递 MYSQL_USER, MYSQL_PASSWORD
而且你没有在 docker 运行 上公开 3306 端口。请使用-p 3306:3306
我发现从头开始手动安装 Superset 比使用 Docker Container 中的 Superset 更适合我,因为手动从 docker 配置 Superset 可能有点麻烦,我所做的:
#-- 从头开始本地安装 Superset 和 MySQL ---#
sudo pip install apache-superset
(
sudo apt install mysql-client-core-8.0
sudo apt install mysql-server
sudo pip install mysqlclient
(对于超集数据库连接器)
#注意:在 pip 中还有一个名为 'superset'
的包,在我的例子中我卸载了它以确保只使用 apache-superset
service mysql start
mysql启动时,第一次尝试设置密码:
sudo mysqladmin -u root 密码
然后进行测试:mysql -u root -p
,输入创建的密码
如果能正常进入mysql,则密码设置成功,
CREATE DATABASE 超集(这将保存超集进度将被保存的所有配置)
在apache superset中编辑config.py,通常位于/usr/local/lib/python3.8/dist-packages/superset/config.py
(这取决于从1开始的pip安装),
8a) 编辑 config.py 中的 sqlalchemy uri 部分,使其可以连接到 ubuntu 中安装的本地 mysql,以像 'mysql://root:@localhost:3306/superset'
8b) 确保config.py中的数据库部分是超集,或者与MySQL
中创建的数据库同名
准备好所有数据库、sqlalchemy uri 和数据库名称后,可以按照以下声明的 Superset 配置进行操作:https://superset.apache.org/docs/installation/installing-superset-from-scratch
A) sudo 超集数据库升级
B) sudo superset fab create-admin
C) sudo 超集加载示例
D) sudo 超集初始化
E) sudo superset 运行 -p 8088 --with-threads --reload --debugger (运行 每日启动超集)
运行 连接到数据库的私有 SSH 隧道(可选,在我的例子中,我使用 SSH 隧道访问数据库)
然后我可以在定义 sqlalchemy uri 的超集中本地添加连接
A) 朝向 SSH 隧道 mysql://(server_user):(server_password)@127.0.0.1:33063/(database_name)
(这是在本地 MySQL 之外)
B) 朝向本地安装 MySQL 'mysql://root:rootpwd@127.0.0.1:3306/database_name'
您需要提供 docker 主机的 IP。如果您使用默认网络,请为主机使用静态 IP 172.17.0.1
。
或者,您可以尝试 host.docker.internal
作为主机名。
我是使用 Ubuntu 的新手,我正在尝试安装 apache-superset
并通过直接 sudo docker pull apache/superset
使用 Docker 成功安装了它,但我卡在了将数据库连接器添加到 运行 超集
至于我的本地数据库,我正在使用 MySQL 并且我碰巧在本地主机中使用 SSH 隧道在服务器中访问它。所以我认为从 Docker 容器的角度来看,这一定是一个“外部”数据库
我尝试过的:
- 我从 pip3 安装了
- 通过以下引用:https://devopsheaven.com/docker/devops/add-host/link/2017/10/04/connect-external-services-from-docker-container.html
mysqlclient
我试着输入:sudo docker run -it mysql -h 192.168.100.1 -P 33063 -u czjovan --password=mypw cz_payment_merged
但后来我得到:
2021-03-04 11:34:53+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.23-1debian10 started.
2021-03-04 11:34:53+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld -h 192.168.100.1 -P 33063 -u czjovan --password=mypw cz_payment_merged --verbose --help --log-bin-index=/tmp/tmp.EV6L0jrspQ
2021-03-04T11:34:53.402148Z 0 [ERROR] [MY-010124] [Server] Fatal error: Can't change to run as user 'czjovan' ; Please check that the user exists!
2021-03-04T11:34:53.403355Z 0 [ERROR] [MY-010119] [Server] Aborting
- 也可以通过以下方式:From inside of a Docker container, how do I connect to the localhost of the machine?
我尝试输入:sudo docker run --rm it --network=host mysql mysql -h 127.0.0.1
但输入 error 2003 (hy000) can't connect to mysql server on 127.0.0.1
- 我尝试将 mysql 连接器添加到 sqlalchemy uri,但未找到驱动程序
我不是设置这些的专家,我缺乏Docker机制..如果有人愿意指导我如何逐步解决这个问题,我将不胜感激..
更新----------------------------------------- -----:
-> 在 Mustafa Guler 添加 -p 3306:3306
之后,mysql 容器现在启动..
但是我仍然无法在Superset中添加数据库,我该怎么办?
您需要定义用户并作为环境传递,以便在 mysql 容器启动期间创建新用户。也许问题出在用户身上并传递 MYSQL_USER, MYSQL_PASSWORD
而且你没有在 docker 运行 上公开 3306 端口。请使用-p 3306:3306
我发现从头开始手动安装 Superset 比使用 Docker Container 中的 Superset 更适合我,因为手动从 docker 配置 Superset 可能有点麻烦,我所做的:
#-- 从头开始本地安装 Superset 和 MySQL ---#
sudo pip install apache-superset
(sudo apt install mysql-client-core-8.0
sudo apt install mysql-server
sudo pip install mysqlclient
(对于超集数据库连接器)
#注意:在 pip 中还有一个名为 'superset'
的包,在我的例子中我卸载了它以确保只使用 apache-superset
service mysql start
mysql启动时,第一次尝试设置密码:
sudo mysqladmin -u root 密码
然后进行测试:mysql -u root -p
,输入创建的密码
如果能正常进入mysql,则密码设置成功,
CREATE DATABASE 超集(这将保存超集进度将被保存的所有配置)
在apache superset中编辑config.py,通常位于/
usr/local/lib/python3.8/dist-packages/superset/config.py
(这取决于从1开始的pip安装),
8a) 编辑 config.py 中的 sqlalchemy uri 部分,使其可以连接到 ubuntu 中安装的本地 mysql,以像 'mysql://root:@localhost:3306/superset'
8b) 确保config.py中的数据库部分是超集,或者与MySQL
中创建的数据库同名准备好所有数据库、sqlalchemy uri 和数据库名称后,可以按照以下声明的 Superset 配置进行操作:https://superset.apache.org/docs/installation/installing-superset-from-scratch
A) sudo 超集数据库升级
B) sudo superset fab create-admin
C) sudo 超集加载示例
D) sudo 超集初始化
E) sudo superset 运行 -p 8088 --with-threads --reload --debugger (运行 每日启动超集)
运行 连接到数据库的私有 SSH 隧道(可选,在我的例子中,我使用 SSH 隧道访问数据库)
然后我可以在定义 sqlalchemy uri 的超集中本地添加连接
A) 朝向 SSH 隧道 mysql://(server_user):(server_password)@127.0.0.1:33063/(database_name)
(这是在本地 MySQL 之外)
B) 朝向本地安装 MySQL 'mysql://root:rootpwd@127.0.0.1:3306/database_name'
您需要提供 docker 主机的 IP。如果您使用默认网络,请为主机使用静态 IP 172.17.0.1
。
或者,您可以尝试 host.docker.internal
作为主机名。