輕量應用服務器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... 菜。

相關文章
相關標籤/搜索