不算是給阿里雲打廣告吧,由於被阿里雲的「雲服務器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... 菜。