SSH 远程链接数据库

SSH 远程链接数据库

十二月 07, 2019

Docker 拉取 MySQL

1
2
3
4
5
6
7
8
9
10
11
12
# 拉取 MySQL 容器 (默认为MySQL8.0)
# mysql8.0 去除 MyTSAM(引擎) 只保留 InnoDB(支持事务)
# 由于要向互联网企业转型, 所以8.0的mysql支持原生分布式数据库解决方案
docker pull mysql/mysql-server

# 启动一个mysql容器
docker run --name mysql -p 3306:3306 \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server

MySQL 配置

登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,
从”localhost”改称”%”,然后重启mysql这样就允许所有的远程机器进行访问了。
1
2
3
4
mysql -u root -p
use mysql;
update user set host = ‘%’ where user = ‘root’;
flush privileges;

SSH配置

1
2
3
4
5
6
7
8
9
# /etc/ssh 目录下sshd_config文件部分配置
Port 22
ListenAddress 0.0.0.0
ListenAddress ::
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes

SSH链接数据库

链接数据库时需要配置3个属性:
useSSL=false
serverTimezone=UTC
allowPublicKeyRetrieval=true
如果用户使用了 sha256_password 认证,
密码在传输过程中必须使用 TLS 协议保护,
但是如果 RSA 公钥不可用,可以使用服务器提供的公钥;
可以在连接中通过 ServerRSAPublicKeyFile 指定服务器的 RSA 公钥,
或者AllowPublicKeyRetrieval=True参数以允许客户端从服务器获取公钥;
但是需要注意的是AllowPublicKeyRetrieval=True
可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码,
所以默认是关闭的,必须显式开启。