阿里云+Ubuntu+Mysql

整个过程虽然不是很复杂,但是在这个过程中所学到的知识以及对自己的反思感觉还是有必要记录一下的。

安装

对于mysql 在linux系统上的安装过程,在自己的[CSDN博客](https://blog.csdn.net/qq_39536716/article/details/106906228) 中已经有所总结与介绍,比较简单这里就不多说了,到此为止在linux上登陆并使用mysql是没有什么问题了。主要是聊一聊下面的过程。

防火墙

我们在进行远程连接的时候,一般Linux上都有防火墙设置,阻止外界直接访问系统端口。

1、可以通过测试:
telnet xxx.xxx.xxx.xxx 端口号
进行测试。
这时候我们可以发现telnet 是不通过的,3306端口拒绝访问。
2、在linux界面进行端口监测,查看3306端口是否已经开启访问:

1
sudo ufw status

这行命令显示出系统已经开启的端口访问。
如果显示有3306 端口 ALLOW 表示防火墙允许远程主机访问。

3、如果未显示上述结果,则需要开放防火墙端口

1
sudo ufw allow 3306

然后在查看防火墙的端口设置,最后重启防火墙

1
sudo ufw reload

配置文件

经过上述配置之后,我们远程电脑与linux 系统的3306端口已经打开第一道防线,一般mysql 的配置中还会对3306端口进行监听。
我们通过下面的命令来查看是否有监听:

1
netstat -an | grep 3306

如果结果中有对127.0.0.1 的监听,表示3306这个端口目前只能被本机使用,因此我们就要修改一下mysql的配置文件。
这一部分在网上查的是在/etc/mysql/my.cnf ,此时我们可以进去可以看到:

1
2
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

这个文件的意思是表示包含/etc/mysql/conf.d/这个路径下面的配置文件,前提是必须以.cnf为后缀,第二行同理;
在这个配置文件这里花费的时间是最长的,因为在找bind-address 的时候花费的时间是最多的。当理解上面的两行命令之后,就可以直接去到conf.d 与 mysql.conf.d中去找,这两个文件夹里面依旧是有配置文件的。

网上对这两个配置文件的描述大多数也比较模糊,通过vim查看刚开始没有找到,注意我这里是直接通过眼睛观察的(有点可笑),并且在查看mysqld.cnf的时候没有发现bind-address这个关键字(具体的原因是因为我没有进行翻页,这是后来才发现的)。苦苦找了一个多小时,无果。
于是死马当作活马医,就使用了

1
vim /etc/mysql/mysql.conf.d/mysqld.cnf | grep bind-address

没想到奇迹发生了 找到了bind-address
这时候才想起来 翻页这回事(有点傻了)
此时注释掉 bind-address 即可。
重启mysql

阿里云客户端配置

这时候linux上的所有配置以为全部结束,便开始远程登陆,难受的事情又发生了,在一个陌生的ip地址处,拒绝了访问。真是有点小苦恼了。拒绝访问,肯定是在数据请求的过程中又有拦截,之前配置过8080端口,于是就去尝试了一下在阿里云客户端处设置3306的可访问操作。
这里在客户端的安全组中就可以添加。

创建远程连接

一切全部配置好了,这时候以为终于可以安全的远程登陆mysql了,没想到意外又发生了(想哭)
远程登陆显示ERROR 1130 (HY000) Host ‘xxxxx’ is not allowed to connect to this Mysql server.
一个陌生的错误出现了,于是在网上查了查这个错误的原因。
这个错误是典型的远程权限问题,远程电脑没有足够的权限对linux上的软件进行访问,于是是需要登陆mysql进行创建一个远程登陆用的账户:

1
grant all PRIVILEGES on db_name.* to 'username'@'xxx.xxx.xx.x' identified by 'password' WITH GRANT OPTION

这里的xxx 表示可以远程访问的ip地址,为了能够访问的时候方便一下,我们尽量在设置自己主机IP的时候,不要使用动态连接池。
或者 我们也可以把xxx用% 替代,这时候就表示所有ip的主机都可以进行访问。不过这样数据的安全性就很大的降低了。
最后,为了让我们的配置生效,我们需要执行:

1
FLUSH   PRIVILEGES;

至此,我们就可以成功的连接了。