轻量应用服务器MySQL远程链接踩坑

不算是给阿里云打广告吧,由于被阿里云的“云服务器ECS” 和 “轻量应用服务器”搞的很蛋疼。不少年前,阿里云的学生机“云翼计划”默认就只有“云服务器ECS”,因此上个月我准备去买一年的学生机的时候,几乎就选择性忽略框框中的内容,选择系统镜像就直接下单了。node

这里写图片描述

买完以后开开心心安装 node nginx mysql docker 各类以后,等到我须要远程链接mysql的时候,花了我几个小时时间踩了一个坑。mysql

轻量应用服务器MySQL远程链接踩坑

1. 登陆服务器

我没有去研究过服务器的什么linux ssh免密登陆,由于我对linux不是太熟悉,介绍免密登陆的博客看的我有点头大。我采用一种比较简单粗暴而且又能偷懒的方式来“免密登陆”。linux

简单说就是 明文、脚本登陆 ,即把ssh 命令以及密码写入脚本里,要登陆就执行脚本就好了。nginx

touch aliyun.sh
vi aliyun.sh
复制代码

拷贝如下内容, 记得替换你本身的ip和密码:sql

#!/usr/bin/expect

set timeout 10

spawn ssh  root@xxx.xx.xx.xxx

expect {

"*password:" {send "password\r"}
}

interact
复制代码

每次须要登陆服务器的时候就 ./aliyun.sh 就好了。文件不泄露,通常也安全的吧。虽然办法土,但还算是节约了几秒钟的时间,主要仍是为了偷懒。(为了安全起见,公司的服务器就别这么搞了,不过通常公司服务器也要安全的话 也会用pin + token来保证。 who cares ?)docker

2. 安装mysql 相关

查看是否安装Mysql

sudo netstat -tap | grep mysql
复制代码

若是为空则没有安装,进行安装:vim

sudo apt-get install mysql-server mysql-client
复制代码

根据提示输入密码,而后确认安全

Mysql 链接测试

mysql -u root -h localhost -p
复制代码

启动,中止,重启 Mysql命令bash

sudo service mysql start
sudo service mysql stop
sudo service mysql restart
复制代码

Ubuntu 安装 mysql 忘记初始密码解决方法

//打开这个文件 /etc/mysql/debian.cnf
//查看默认分配的密码
[client]
host = localhost
user = debian-sys-maint
password = eyPDN7kavhmjCZUn (记住这个密码)
socket = [表情]ar/run/mysqld/mysqld.sock
复制代码

输入命令进入mysql修改用户密码

// 输入命令后把上面的密码粘贴进去
mysql -u debian-sys-maint -p
//进入到mysql界面厚修改密码
update mysql.user set authentication_string=password('newpassword') where user='root';

//都要使用刷新权限列表
flush privileges;
复制代码

3. 终于开始要远程链接mysql了...

若是是彻底按照上面的操做,直接打开 navicat ,输入ip、port 这些信息 test connect 的时候必定会报下面的这种错误的:服务器

2003 - Can't connect to MySQL server on 'xxx.xx.xx.xxx' (61 "Connection refused") 复制代码

好的,我知道了,那我开一下防火墙端口,设置一个mysql的帐号用来远程链接吧。这些网上基本都有很详细的教程,我简单列一下命令:(主要也是给我本身偷懒,知道大概的步骤是怎么样的,可是命令太长,记不住,浪费几秒钟。)

sudo su

// 进入mysql
mysql -u root -p

// 新建一个有远程链接权限的帐号
//$username表示用户名,%表示全部的电脑均可以链接,也能够设置某个ip地址运行链接,$password表示密码
GRANT ALL PRIVILEGES ON *.* TO '$username'@'%' IDENTIFIED BY '$password' WITH GRANT OPTION; 

flush privileges;

// 查看全部用户和权限
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 

exit;

// 修改mysql配置
vim /etc/mysql/mysql.conf.d/mysqld.cnf // 若是你是按照个人方式安装的mysql, bind-address 这一行是在这个文件

#bind-address = 127.0.0.1 这一行注释

// 重启mysql
/etc/init.d/mysql restart 
复制代码

这个时候 telnet ip 3306 还不通,说明防火墙 3306端口没有开。按照网上所介绍的阿里云安全组规则去打开端口,具体也不介绍了,网上不少,看图也能明白。

这里写图片描述

这里写图片描述

舒服了,终于写完了,test connect 一下,报错:

MYSQL ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xx.xxx' 复制代码

啊,不该该啊,我都是按照流程来的,因而从新看了一遍,发现没有漏掉的、也没有不对的。很郁闷啊,以为本身的操做彻底没有问题,你们都说配置一下安全组就行了,必定是阿里云想坑我!

接着排查,但都正常。

ps -ef | grep mysql 
netstat -tlanp | grep 3306 
复制代码

... 各类折腾中... ...

下面就是我想说的坑点了: 我发现我买的居然是 轻量应用服务器。。。 讲道理我也不知道这个是个什么鬼,后来就发现了

这里写图片描述

原来左侧是由切换的。后来发现了轻量应用服务器的防火墙配置:

这里写图片描述

这里配置了 3306 以后, telnet ip 3306 就通了,记得应用类型要选 MYSQL ,接着 test connect 就绿了。

哇! 因此我究竟是被谁坑了!

坑都被坑了之我就看一下有没有亏

轻量应用服务器优点,我只看见了 40g ssd,其余的我也无论,大概是没有亏?

总结

我其实的确是想吐槽的,我一直觉得我买的是普通的云服务器,网上搜远程链接mysql的时候,几乎是没有关于轻量应用服务器滴,这就又引导我到了“李鬼”那里。看了一下阿里云的论坛,彷佛如今也不能将我这个一年的轻量应用服务器换成ECS了。算了算了,也行吧,反正也能用,我也不挑的。

还有啊,大家家阿里云的广告啊,都贴到咱们公司门口了!咱们家云不要面子的啊!啊西八,我必定会贴回来的。

因此,最终仍是我本身坑的我本身 ToT... 菜。

相关文章
相关标签/搜索