开放只读账号外部访问数据库
操作步骤
进入操作机
ones-ai-k8s.sh
进入 mysql 创建只读账号
#查询root帐号的密码
cat config/private.yaml | grep mysqlRootPassword
#mysqlRootPassword: KSiGLzpG5B6zHNkB
kubectl -n ones exec -it mysql-cluster-mysql-0 bash
#连接mysql 密码用上面查到的替换
mysql -uroot -p<password>
# mysql -uroot -pKSiGLzpG5B6zHNkB
CREATE USER '<user_name>'@'%' IDENTIFIED BY '<user_password>';
#例如: CREATE USER 'onesreadaccount'@'%' IDENTIFIED BY 'ones123456';
#根据之前创建的用户名替换<user_name>
GRANT SELECT ON *.* TO '<user_name>'@'%';
# 例如: GRANT SELECT ON *.* TO 'onesreadaccount'@'%';
flush privileges;
#查看权限是否赋予成功
#根据之前创建的用户名替换<user_name>
show grants for <user_name>;
#例如: show grants for onesreadaccount;
#mysql> show grants for onesreadaccount;
#+----------------------------------------------+
#| Grants for onesreadaccount@% |
#+----------------------------------------------+
#| GRANT SELECT ON *.* TO 'onesreadaccount'@'%' |
#+----------------------------------------------+
#1 row in set (0.00 sec)
#如果展示的数据中只有GRANT SELECT ON *.* TO 'onesreadaccount'@'%'则说明权限赋予成功。
创建的帐号即为只读帐号。
创建外部访问网络服务
创建一个 export-mysql-service.yaml
文件,内容如下:
apiVersion: v1
kind: Service
metadata:
name: export-mysql-service
namespace: ones
spec:
selector:
statefulset.kubernetes.io/pod-name: mysql-cluster-mysql-0
ports:
- protocol: TCP
port: 3306
targetPort: 3306
nodePort: 30015
type: NodePort
其中 30015 端口代表你外部访问数据库的端口,可以自行修改。
执行命令创建服务:
kubectl apply -f export-mysql-service.yaml
验证
使用如下命令,或者数据库工具能够连接数据库即可。
mysql -h10.0.0.203 -uonesreadaccount -P30015 -pones123456