Linux系统下MySQL通过SSH配置远程访问

需积分: 14 21 下载量 188 浏览量 更新于2024-09-25 1 收藏 3KB TXT 举报
"该文档是关于在Linux系统中配置MySQL通过SSH进行安全连接的教程,主要涉及SSH密钥对的生成、复制以及设置MySQL的权限,以实现远程访问。" 在Linux环境中,为了确保数据库如MySQL的安全访问,通常会采用SSH(Secure Shell)进行加密的远程连接。本配置文档主要介绍了如何在两个Linux主机之间建立SSH隧道,以便通过本地机器安全地访问远程MySQL服务器。 首先,你需要在本地主机上生成SSH公钥和私钥对。这可以通过运行`ssh-keygen`命令来完成,它将创建`id_rsa`(私钥)和`id_rsa.pub`(公钥)文件。公钥需要复制到远程MySQL服务器上,可以通过`ssh-copy-id`命令完成,例如:`ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.189.139`。这样,本地机器就可以使用SSH密钥对无密码登录到远程服务器。 配置SSH隧道的关键步骤是使用`ssh`命令建立端口转发。在本例中,本地机器的3388端口被映射到远程MySQL服务器的3306端口,命令如下: ```bash ssh -N -f -L 3388:192.168.189.139:3306 root@192.168.189.139 ``` 这里,`-N`表示不执行远程命令,`-f`使ssh后台运行,`-L`指定本地端口转发。现在,你可以通过本地的3388端口连接到远程的MySQL服务器,而无需暴露3306端口给外部网络。 为了允许本地机器通过SSH隧道访问MySQL,还需要在远程MySQL服务器上设置相应的用户权限。例如,创建一个名为'fc'的用户,并赋予其从特定IP(192.168.189.133)访问所有数据库的SELECT权限: ```sql GRANT SELECT ON *.* TO 'fc'@'192.168.189.133' IDENTIFIED BY '111111'; ``` 最后,你可以使用`mysql`客户端工具,通过指定 `-u fc`, `-P 3388`, `-h 127.0.0.1` 和 `-p111111` 参数,连接到远程MySQL服务器。例如: ```bash mysql -u fc -P 3388 -h 127.0.0.1 -p111111 ``` 此配置完成后,你可以在本地安全地与远程MySQL服务器交互,同时保护了数据库免受未经授权的访问。 注意,为了监控SSH隧道是否正常工作,可以使用`netstat`命令检查端口状态。如文档所示,`netstat -tulnp | grep 3388` 和 `netstat -an | grep 192.168.189.139` 可以查看本地3388端口的监听状态和确认TCP连接是否建立。 通过SSH配置MySQL连接是一种增强安全性的方式,它可以防止敏感数据在传输过程中被截获,并且只允许特定的客户端访问数据库。这个过程包括了SSH密钥对的生成、复制,端口转发的设置,以及MySQL的权限管理。正确执行这些步骤,可以确保你的MySQL数据库在远程访问时保持安全。