具有Docker的超集无法添加到外部mysql的连接

具有Docker的超集无法添加到外部mysql的连接,docker,superset,Docker,Superset,我是Ubuntu的新手,我正在尝试安装apache超集,并通过直接sudo-Docker-pull-apache/supset使用Docker成功地安装了它,但我一直在为运行的超集添加数据库连接器 至于我的本地数据库,我正在使用MySQL,我碰巧在localhost中使用SSH隧道在服务器中访问它。所以我认为从Docker容器的角度来看,这一定是一个“外部”数据库 我所尝试的: 我从pip3安装了mysqlclient 通过以下引用: 我试图键入:sudocker run-it mysql-h

我是Ubuntu的新手,我正在尝试安装
apache超集
,并通过直接
sudo-Docker-pull-apache/supset
使用Docker成功地安装了它,但我一直在为运行的超集添加数据库连接器

至于我的本地数据库,我正在使用MySQL,我碰巧在localhost中使用SSH隧道在服务器中访问它。所以我认为从Docker容器的角度来看,这一定是一个“外部”数据库

我所尝试的:

  • 我从pip3安装了
    mysqlclient
  • 通过以下引用:
  • 我试图键入:
    sudocker run-it mysql-h 192.168.100.1-p 33063-u czjovan--password=mypw cz\u payment\u 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
    
  • 通过以下方式:
  • 我尝试键入:
    sudo docker run--rm it--network=host mysql mysql-h 127.0.0.1
    但出现
    错误2003(hy000)无法连接到127.0.0.1上的mysql服务器

  • 我试图将mysqlconnector添加到sqlalchemy uri,但找不到驱动程序
  • 我不是设置这些的专家,我缺乏Docker机制。。如果有人愿意指导我如何逐步解决这个问题,我将不胜感激

    更新-------------------------------------------: ->在Mustafa Guler添加
    -p 3306:3306
    之后,mysql容器现在启动

    但我仍然无法在超集中添加数据库,接下来该怎么做


    在mysql容器启动期间,您需要定义user和pass as环境来创建新用户。可能问题在于用户和pass
    MYSQL\u用户,MYSQL\u密码
    也就是说,在docker运行时,您并没有公开3306端口。请使用
    -p3306:3306

    在mysql容器启动期间,您需要定义用户并传递为环境来创建新用户。可能问题在于用户和pass
    MYSQL\u用户,MYSQL\u密码
    也就是说,在docker运行时,您并没有公开3306端口。请使用
    -p 3306:3306

    我发现从头开始手动安装超集比使用Docker容器中的超集更适合我,因为手动配置Docker中的超集可能有点麻烦,我所做的:

    #--从头开始在本地安装Superset和MySQL---#

  • sudopip安装apache超集
    (
  • sudo apt安装mysql-client-core-8.0
  • sudo apt安装mysql服务器
  • sudo pip安装mysqlclient
    (用于超集数据库连接器)
  • #注意:在pip中还有一个名为
    'superset'
    的包,在我的例子中,我卸载了这个包以确保只使用apache superset

  • 服务mysql启动

  • mysql启动时,第一次尝试设置密码:

    sudo mysqladmin-u根密码

  • 然后要测试它:
    mysql-u root-p
    ,输入一个创建的密码

    如果能正常进入mysql,密码设置成功

  • 创建数据库超集(这将保存保存超集进度的所有配置)

  • 在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:@本地主机:3306/superset'

    8b)确保config.py中的数据库部分是超集,或者与MySQL中创建的数据库名称相同

  • 在准备好所有数据库、sqlalchemy uri和数据库名称之后,可以使用超集配置,如下所述:

    A) sudo超集数据库升级

    B) sudo超集fab创建管理

    C) sudo超集加载示例

    D) sudo超集初始化

    E) sudo超集run-p8088——带线程——重载——调试器(每天运行此命令以启动超集)

  • 运行连接到数据库的私有SSH隧道(可选,在我的示例中,我使用SSH隧道访问数据库)

  • 然后我可以在定义sqlalchemy uri的超集中本地添加连接

    A) 朝向SSH隧道
    mysql://(服务器\用户):(服务器\密码)@127.0.0.1:33063/(数据库\名称)
    (这在本地MySQL之外)


    B) 面向本地安装的MySQL
    'mysql://root:rootpwd@127.0.0.1:3306/database_name'

    我发现从头开始手动安装超集比使用Docker容器中的超集更适合我,因为手动配置Docker中的超集可能有点麻烦,我做了以下工作:

    #--从头开始在本地安装Superset和MySQL---#

  • sudopip安装apache超集
    (
  • sudo apt安装mysql-client-core-8.0
  • sudo apt安装mysql服务器
  • sudo pip安装mysqlclient
    (用于超集数据库连接器)
  • #注意:在pip中还有一个名为
    'superset'
    的包,在我的例子中,我卸载了这个包以确保只使用apache superset

  • 服务mysql启动

  • mysql启动时,第一次尝试设置密码:

    sudo mysqladmin-u根密码

  • 然后要测试它:
    mysql-u root-p
    ,输入一个创建的密码

    如果能正常进入mysql,密码设置成功

  • 创建数据库超集(这将保存保存超集进度的所有配置)

  • 在apache superset中编辑config.py,它通常位于/
    usr/local/lib/python3.8/dist-packages/superset/config.py
    (这取决于从1号开始的pip安装)

  • 8a)编辑config.py中的sqlalchemy uri部分,这样它就可以连接到ubuntu中本地安装的mysql,以及somet