Linux 服务器连接远程数据库(Mysql、Pgsql)
由于自己需要国外服务器和国内服务器数据同步,
所以从国外服务器连接过国内服务器的数据库。
下文中,国内服务器称作一号机,国外服务器为二号机。前提是两台服务器都安装配置了数据库。
Mysql
1、两台服务器安全组设定
一号机入站规则,开放 3306 端口,来源设置为二号机 IP。
二号机出站规则,开发 3306 端口,目的地设置为一号机 IP。
2、mysql 配置文件修改(my.cnf)
登录一号机去除配置文件中的允许访问限制。注释掉下面一行,或者在后面追加二号机 IP
# 设置时补全二号机 IP
bind-address = 127.0.0.1 172......14
至此,重启 Mysql,两台服务器可以通过 3306 端口顺利通信。
登录二号机执行命令确认是否正常通信。
# 确认时补全一号机 IP
telnet 182......21 3306
3、设置远程连接的账号及权限
登录一号机,连到本地数据库,在系统的 mysql 数据库的 user 表中存放了所有 mysql 的用户信息。
mysql> select Host, User from user;
+------------------------------------------------+------------------+
| Host | User |
+------------------------------------------------+------------------+
| % | root |
| ip-10-x-xx-xx5.ap-xxxxxxxx | root |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+------------------------------------------------+------------------+
6 rows in set (0.00 sec)
上图中 root 用户的 host 是 %,可以用于所有 IP 登录一号机的数据库。
用命令创建新用户,用于远程登录,
# 允许 172.......14 IP 用 newuser 用户 pwd 密码登录到一号机的所有数据库
# 第一个 *,指定允许连接的数据库
# 第二个 *,指定允许连接的数据表
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'172.......14' IDENTIFIED BY 'pwd' WITH GRANT OPTION;
4、登录二号机连接测试
mysql -h 182........214 -u newuser -p pwd
Pgsql
1、两台服务器的安全组设定
一号机入站规则开放 5432 端口,来源设置为二号机 IP。
二号机出站规则开发 5432 端口,目的地设置为一号机 IP。
2、pgsql 配置文件修改(登录一号机)
① 在 postgresql.conf 文件中,修改 psql 服务端监听地址
# 监听地址默认为 localhost,修改为 *
listen_addresses = '*'
② 在 pg_hba.conf 文件中,修改访问策略
# TYPE DATABASE USER ADDRESS METHOD
host all newuser 172.....14/20 trust
上面的设置表示 172.....14 IP 可以用 newuser 用户无需密码验证登录一号机的所有数据库
3、重启一号机 Pgsql 服务。
4、登录二号机连接测试。
# 连接 182........214 服务器的 db 数据库
psql -h 182........214 -u newuser -d db
以上,全部内容结束。