不算是给阿里云打广告吧,由于被阿里云的“云服务器ECS” 和 “轻量应用服务器”搞的很蛋疼。不少年前,阿里云的学生机“云翼计划”默认就只有“云服务器ECS”,因此上个月我准备去买一年的学生机的时候,几乎就选择性忽略框框中的内容,选择系统镜像就直接下单了。node
买完以后开开心心安装 node nginx mysql docker 各类以后,等到我须要远程链接mysql的时候,花了我几个小时时间踩了一个坑。mysql
我没有去研究过服务器的什么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
sudo netstat -tap | grep mysql
复制代码
若是为空则没有安装,进行安装:vim
sudo apt-get install mysql-server mysql-client
复制代码
根据提示输入密码,而后确认安全
mysql -u root -h localhost -p
复制代码
启动,中止,重启 Mysql命令bash
sudo service mysql start
sudo service mysql stop
sudo service mysql restart
复制代码
//打开这个文件 /etc/mysql/debian.cnf
//查看默认分配的密码
[client]
host = localhost
user = debian-sys-maint
password = eyPDN7kavhmjCZUn (记住这个密码)
socket = [表情]ar/run/mysqld/mysqld.sock
复制代码
// 输入命令后把上面的密码粘贴进去
mysql -u debian-sys-maint -p
//进入到mysql界面厚修改密码
update mysql.user set authentication_string=password('newpassword') where user='root';
//都要使用刷新权限列表
flush privileges;
复制代码
若是是彻底按照上面的操做,直接打开 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... 菜。