sql >> Databáze >  >> RDS >> Mysql

Přístup k mysql běžícímu na localhost z minikube

Jako OS a minikube vm-driver nebyl zmíněn, předpokládám, že je to --vm-driver=virtualbox protože je to asi nejčastější případ. Pokud používáte něco jiného, ​​musíte toto řešení upravit podle vaší konfigurace.

Vysvětlení:

127.0.0.1 je localhost (lo0 ) IP adresa rozhraní. Nody, Hosts a Pods mají svá vlastní rozhraní localhost a nejsou vzájemně propojeny.

Váš mysql-server běží na hostitelském počítači a nelze k němu přistupovat pomocí localhost (nebo je to rozsah IP) zevnitř klastrového modulu minikube nebo zevnitř minikube vm.

Řešení:

  1. Měli byste mít síť mezi minikube VM a hostitelem. Výchozí síť NAT ve Virtualboxu na to není dobrá, takže je lepší vytvořit jinou síť pouze pro hostitele. Pojďme vytvořit další síť pouze pro hostitele v uživatelském rozhraní Virtualbox s názvem vmnet2 a rozsah IP 192.168.77.1/24 . Pro tuto síť nemusíte povolovat DHCP.

  2. Musíte nakonfigurovat mysql, aby naslouchal na rozhraní vmnet2 nebo ip 192.168.77.1 který se standardně používá pro hostitelský počítač. Zkontrolujte, zda je přístupný z hostitele:

mysql -h 192.168.77.1 -u root -p 
  1. K připojení této sítě k virtuálnímu počítači minikube by měl být použit klíč --host-only-cidr. Jiný typ vm-driver pro tento účel použijte různé možnosti cli. Zkontrolujte minikube start --help výstup. Tedy pro virtualbox bude to vypadat následovně:

    minikube start --cpus 2 \
                   --memory 2048 \
                   --disk-size 20g \
                   --vm-driver virtualbox \
                   --network-plugin flannel \
                   --kubernetes-version v1.12.2 \
                   --host-only-cidr 192.168.77.1/24
    

    Napsal jsem další nejběžnější možnosti cli jen pro pohodlí.

    MinikubeVM získá následující IP adresu:192.168.77.100 (alespoň poprvé. )Můžete to zkontrolovat pomocí minikube ssh a poté ifconfig příkazy.

  2. Poslední část – potřebujeme pro ni vytvořit službu a koncový bod uvnitř minikube cluster:

kubectl apply -f mysql-service.yaml

Zde je obsah mysql-service.yaml soubor:

---
apiVersion: v1
kind: Service
metadata:
   name: mysql-service
spec:
   type: ClusterIP
   ports:
   - protocol: TCP
     port: 3306
     targetPort: 3306
---
apiVersion: v1
kind: Endpoints
metadata:
  name: mysql-service
subsets:
  - addresses:
      - ip: 192.168.77.1
    ports:
      - port: 3306
  1. Nyní můžeme použít mysql-service název a port 3306 uvnitř libovolného modulu tohoto shluku jako cílový bod.


  1. Definujte proměnnou v rámci select a použijte ji ve stejném výběru

  2. Analýza řetězce do data mysql

  3. Jak napsat dotaz, který dělá něco podobného jako GROUP_CONCAT MySQL v Oracle?

  4. Jaký je rozdíl mezi varchar a nvarchar?