mysql 跨服务器链接的问题
将阿里服务器上的MySQL服务暴露出来
众所周知, MySQL服务默认是只能当前机器本地才能链接上,是不会对外曝光的, 所以当你有两台服务器时, 并且想将服务器A安装上MySQL服务, 方便服务器B上的项目去操作服务器A的MySQL数据库时怎么办呢?
场景:
一台专门放置MySQL数据库的服务器A --- 一般来说这台服务器只能内网链接, 安全
一台放置你运行项目的服务器B
操作步骤:
- 在服务器A上安装MySQL服务
- Ubuntu sudo apt-get install mysql-server
- 修改MySQL用户权限
use mysql; update user set host = '%' where user root; flush privileges;
- MySQL中的mysql 库里有个user 表, 这个表存着所有用户的信息, 我这里假设我的MySQL的登陆用户(user字段)为root来做操作, 其中host表明用户的来源, 可以理解为,用户通过哪里才能进来,通俗的来说就是授权,它默认的localhost, 也就是说这个用户只能本地登陆, 将他修改为%标明用户可以通过任何途径来访问MySQL数据库, 关于localhost和%的区别, 你可以理解为 % 是模糊匹配,可以根据自己的需求模糊比配某几个来源, 例如 %.23, 只要IP是.23 结尾的都可以访问MySQL服务。
- 修改MySQL监听的TCP/Ip
vim /etc/mysql/mysql.conf.d/mysqld.cnf # bind-address = 127.0.0.1 # or bind-address = 0.0.0.0
- 这里是MySQL的配置文件中的, 我是Ubuntu默认安装后生成的MySQL配置文件的地址
- 修改阿里云的安全组
-
这里最主要, 如果在阿里的安全组中没有将3306(默认的MySQL端口)端口抛出的话, 你是没有办法通过服务器B去访问的, 下面是我配置安全组的截图
-