Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在Windows10上使用bash时,为什么它要将my$()作为单独的命令执行?_Mysql_Windows_Git Bash_Minikube - Fatal编程技术网

Mysql 在Windows10上使用bash时,为什么它要将my$()作为单独的命令执行?

Mysql 在Windows10上使用bash时,为什么它要将my$()作为单独的命令执行?,mysql,windows,git-bash,minikube,Mysql,Windows,Git Bash,Minikube,我正在学习如何在Windows10家用电脑上使用Docker和Minikube。我已经安装了所需的软件。我已经安装了Docker、minikube、kubectl和MySQL的最新版本,并对其进行了正确的路径设置,以便可以使用其CLI。我使用的是GIT提供的Bash控制台和/或Cygwin提供的Bash控制台。两者似乎都提供了相同的(糟糕的)结果 我启动Docker,并安装MySQL服务。kubectl get all显示一切正常运行 根据我正在阅读的编程书,我想尝试通过以下命令访问MySQL:

我正在学习如何在Windows10家用电脑上使用Docker和Minikube。我已经安装了所需的软件。我已经安装了Docker、minikube、kubectl和MySQL的最新版本,并对其进行了正确的路径设置,以便可以使用其CLI。我使用的是GIT提供的Bash控制台和/或Cygwin提供的Bash控制台。两者似乎都提供了相同的(糟糕的)结果

我启动Docker,并安装MySQL服务。kubectl get all显示一切正常运行

根据我正在阅读的编程书,我想尝试通过以下命令访问MySQL:

mysql -h $(minikube service mysql-svc --format "{{.IP}}") -P $(minikube service mysql-svc --format "{{.Port}}") -u root -p
结果应该是MySQL CLI提示符,如MySQL>。相反,我有这样的行为:

  • 弹出窗口,说明“Windows找不到'192.168.99.101'。请确保键入的名称正确,然后重试

  • 控制台文本:

    系统找不到文件192.168.99.101

    *

    X打开url失败:192.168.99.101:退出状态1

    *

    *由于错误,minikube正在退出。如果上述消息无效,请打开一个问题:

    -(用于发送错误消息的URL)

  • 弹出窗口说明“Windows找不到'31067'。请确保键入的名称正确,然后重试

  • 控制台文本:

    mysql:[错误]未知后缀“|”用于变量“port”(值(给出包围minikube服务mysql svc输出的边界) mysql:[错误](指向mysql.exe的路径):将值“|-----(etc)”设置为“端口”时出错

  • 预期的行为是将IP和端口插入mysql命令行,然后触发类似mysql-h-p31067-uroot-p的命令

    我认为问题在于在Windows环境中使用Bash控制台。请给出任何解释

    谢谢

    杰罗姆

    2020年8月7日更新:

    我被要求更彻底地记录我的问题。开始吧

    以下是Docker知道的:

    $ docker images
    REPOSITORY                                                        TAG
          IMAGE ID            CREATED             SIZE
    logicaltiger/cloudnative-statelessness-posts                      latest
          3a3c66daf7f3        5 days ago          139MB
    logicaltiger/cloudnative-statelessness-connections                latest
          d060e9857f49        5 days ago          139MB
    logicaltiger/cloudnative-statelessness-connectionposts-stateful   latest
          ce33f0966380        5 days ago          123MB
    openjdk                                                           8-jdk-alpine
          a3562aa0b991        15 months ago       105MB
    mysql                                                             8.0.12
          ee1e8adfcefb        22 months ago       484MB
    
    这是我对minikube的重新配置。其他海报建议minikube在没有大量资源的情况下运行不稳定

    $ minikube delete
    * Deleting "minikube" in virtualbox ...
    * Removed all traces of the "minikube" cluster.
    
    $ minikube start --cpus=4 --memory=4096
    * minikube v1.12.1 on Microsoft Windows 10 Home 10.0.18363 Build 18363
    * Automatically selected the virtualbox driver
    * Starting control plane node minikube in cluster minikube
    * Creating virtualbox VM (CPUs=4, Memory=4096MB, Disk=20000MB) ...
    * Found network options:
      - NO_PROXY=192.168.99.100
      - no_proxy=192.168.99.100
    * Preparing Kubernetes v1.18.3 on Docker 19.03.12 ...
      - env NO_PROXY=192.168.99.100
    * Verifying Kubernetes components...
    * Enabled addons: default-storageclass, storage-provisioner
    * Done! kubectl is now configured to use "minikube"
    
    从yaml文件启动mysql后,我让它运行:

    $ kubectl get all
    NAME                         READY   STATUS    RESTARTS   AGE
    pod/mysql-7dbfd4dbc4-b2tmm   1/1     Running   0          2m55s
    
    NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          A
    GE
    service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          6
    m43s
    service/mysql-svc    NodePort    10.102.7.119   <none>        3306:32235/TCP   2
    m55s
    
    NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/mysql   1/1     1            1           2m55s
    
    NAME                               DESIRED   CURRENT   READY   AGE
    replicaset.apps/mysql-7dbfd4dbc4   1         1         1       2m55s
    
    尝试运行图书示例。我再次得到两个弹出窗口以及终端中显示的内容。我在这里省略了弹出窗口文本

    $ mysql -h $(minikube service mysql-svc --format "{{.IP}}") -P $(minikube service mysql-svc --format "{{.Port}}") -u root -p
    The system cannot find the file 192.168.99.102.
    *
    X open url failed: 192.168.99.102: exit status 1
    *
    * minikube is exiting due to an error. If the above message is not useful, open
    an issue:
      - https://github.com/kubernetes/minikube/issues/new/choose
    The system cannot find the file 32235.
    *
    X open url failed: 32235: exit status 1
    *
    * minikube is exiting due to an error. If the above message is not useful, open
    an issue:
      - https://github.com/kubernetes/minikube/issues/new/choose
    mysql: [ERROR] Unknown suffix '|' used for variable 'port' (value '|-----------|
    -----------|-------------|-------|')
    mysql: [ERROR] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe: Error whil
    e setting value '|-----------|-----------|-------------|-------|' to 'port'
    
    我被问到如果我直接输入IP会发生什么。从上面看,IP是

    当直接进入IP和端口时,MySQL服务器被访问(见“输入密码:”提示),但请求被拒绝,我想我不知道如何让MySQL使用HTTP请求

    但是MySQL不知道如何处理IP,以及间接方法(minikube服务MySQL-svc…)的相关方式吗

    继续,我用MySQL地址编辑我的cookbook-deployment-posts.yaml文件:

    kind: Service
    apiVersion: v1
    metadata:
      name: posts-svc
    spec:
      selector:
        app: posts
      ports:
      - protocol: "TCP"
        port: 80
        targetPort: 8080
      type: NodePort
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: posts
      labels:
        app: posts
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: posts
      template:
        metadata:
          labels:
            app: posts
        spec:
          containers:
          - name: posts
            image: cdavisafc/cloudnative-statelessness-posts
            env:
              - name: INSTANCE_IP
                valueFrom:
                  fieldRef:
                    fieldPath: status.podIP
              - name: PORT
                value: "8080"
              - name: SPRING_APPLICATION_JSON
                value: '{"spring":{"datasource":{"url":"jdbc:mysql://192.168.99.102:32235/cookbook"}}}'
    
    去kubectl get all,posts svc持续启动、出错并重新启动。不知道出了什么问题


    杰罗姆。

    我现在看到很多事情出了问题

    首先,我一直认为mysql调用在某种程度上与我电脑上安装的mysql有关。从来都不是。仅仅因为我在我的电脑实例上手动创建了一个cookbook数据库,并不意味着通过Docker/Minikube的教科书示例曾经引用过它

    第二,教科书的minikube请求中缺少了--url。下面是发生的情况

    > kubectl create -f mysql-deployment.yaml
    
    > minikube service mysql-svc --url
    http://192.168.99.102:31030
    
    > minikube service mysql-svc
    
    这将打开web浏览器以显示192.168.99.102:31030处的服务。mysql服务不会呈现网页,但这与本例无关。然后,控制台将在ASCII框中显示服务的详细信息(名称空间、名称、目标端口、url)

    minikube service mysql-svc --format "{{.IP}}"
    
    这需要打开web浏览器以显示位于的服务,隐含端口为80。但是那里没有任何内容,Windows在弹出框中抱怨。然后控制台抱怨没有打开该url

    minikube service mysql-svc --format "{{.Port}}"
    
    这需要打开web浏览器以显示31030处的服务,该服务不是有效的URL。投诉,投诉

    我一直想要的是将--url添加到minikube位:

    mysql -h $(minikube service mysql-svc --format "{{.IP}}" --url) -P $(minikube service mysql-svc --format "{{.Port}}" --url) -u root -p
    
    这连接到控制台中的托管mysql,产生mysql>提示符。现在我可以运行“创建数据库cookbook;”


    解决了!

    这样做
    ,然后启动类似mysql-h的命令http://192.168.99.101 -P 31067-u root-P
    实际工作吗?
    我启动了Docker,并安装了MySQL服务。
    你的意思是你部署了一个MySQL吊舱和服务吗?Docker是Docker,kubernetes是kubernetes。看一个例子。你能添加来自
    kubectl ge的输出吗t全部
    minikube service mysql-svc --format "{{.Port}}"
    
    mysql -h $(minikube service mysql-svc --format "{{.IP}}" --url) -P $(minikube service mysql-svc --format "{{.Port}}" --url) -u root -p