k8s pod访问集群外数据库

107 阅读2分钟

mysql数据库192.168.10.1 k8s master 192.168.10.226

  1. 修改 MySQL 配置文件

    • 找到 MySQL 的配置文件 my.cnf(在 Linux 系统中通常位于 /etc/mysql/my.cnf/etc/my.cnf,在 Windows 系统中通常位于 MySQL 安装目录下)。

    • 找到

      [mysqld]
      

      部分,确保有以下行:

      bind-address = 0.0.0.0  
      
    • 这将允许 MySQL 接受来自任何 IP 地址的连接。

  2. 创建用户并授权

    • 登录到 MySQL:

      mysql -u root -p  
      
    • 创建一个新用户并授予远程访问权限(将

      username
      

      password
      

      替换为你想要的用户名和密码):

      CREATE USER 'username'@'%' IDENTIFIED BY 'password';  
      GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;  
      FLUSH PRIVILEGES;  
      
  3. 防火墙设置

    • 确保你的防火墙允许 MySQL 的默认端口(3306)通过。可以使用以下命令(以

      ufw
      

      为例):

      sudo ufw allow 3306  
      
  4. 重启 MySQL 服务

    • 修改配置后,需要重启 MySQL 服务以使更改生效:

      sudo systemctl restart mysql  
      
  5. 远程连接

    • 使用 MySQL 客户端或其他数据库管理工具(如 MySQL Workbench)进行远程连接,输入服务器的 IP 地址、用户名和密码。

完成以上步骤后,你应该能够成功远程连接到 MySQL 5.7 数据库。如果遇到问题,请检查配置和防火墙设置。

修改密码策略(可选)

如果你希望放宽密码策略,可以通过修改 validate_password 插件的配置来实现。以下是步骤:

  1. 登录到 MySQL:

    mysql -u root -p  
    
  2. 查看当前的密码策略:

    SHOW VARIABLES LIKE 'validate_password%';  
    
  3. 修改密码策略(例如,设置为较低的强度):

    SET GLOBAL validate_password_policy = LOW;  
    
  4. 你也可以调整密码长度要求:

    SET GLOBAL validate_password_length = 6;  
    

3. 创建用户

在调整密码策略后,你可以再次尝试创建用户。确保使用符合新策略的密码。

4. 重新连接并测试

创建用户后,记得刷新权限:

FLUSH PRIVILEGES;  

然后尝试使用新用户进行远程连接。

注意事项

  • 修改密码策略可能会降低数据库的安全性,建议在生产环境中谨慎使用。
  • 如果需要恢复默认设置,可以将 validate_password.policy 设置回 MEDIUMSTRONG

容器内登录集群外mysql

echo -n "kunkun" |base 64

echo -n "wzq314914" |base 64

cat secret-mysql.yaml 
apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
type: Opaque
data:
  mysql-password: d3pxMzE0OTE0
  mysql-user: a3Vua3Vu

创建pod

cat pod-mysql5.7.yaml 
apiVersion: v1  
kind: Pod  
metadata:  
  name: my-mysql5.7-pod  
spec:  
  containers:  
  - name: mycontainer  
    image: registry.cn-hangzhou.aliyuncs.com/6aliyun6/yun:my-centos7
    env:
    - name: MYSQL_HOST
      value: "192.168.10.1"
    - name: MYSQL_PORT
      value: "3306"
    - name: MYSQL_USER
      valueFrom:
        secretKeyRef:
          name: mysql-secret
          key: mysql-user
    - name: MYSQL_PASSWORD
      valueFrom:
        secretKeyRef:
          name: mysql-secret
          key: mysql-password
    command: ["/bin/bash"]  
    args: ["-c", "while true; do echo hello; sleep 10; done"]


kubectl exec -it my-mysql5.7-pod  -- bash
kubectl cp repo rongqi:/etc/yum.repos.d
​
yum install mysql
​
mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST
​
​
​