Mysql 在Windows10上使用bash时,为什么它要将my$()作为单独的命令执行?
我正在学习如何在Windows10家用电脑上使用Docker和Minikube。我已经安装了所需的软件。我已经安装了Docker、minikube、kubectl和MySQL的最新版本,并对其进行了正确的路径设置,以便可以使用其CLI。我使用的是GIT提供的Bash控制台和/或Cygwin提供的Bash控制台。两者似乎都提供了相同的(糟糕的)结果 我启动Docker,并安装MySQL服务。kubectl get all显示一切正常运行 根据我正在阅读的编程书,我想尝试通过以下命令访问MySQL: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:
mysql -h $(minikube service mysql-svc --format "{{.IP}}") -P $(minikube service mysql-svc --format "{{.Port}}") -u root -p
结果应该是MySQL CLI提示符,如MySQL>。相反,我有这样的行为:
$ 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