最近兩個月忙成狗,給了自己一個冠冕堂皇的不記錄博客的藉口,今天咬牙記錄一篇本地連阿里雲mysql遇到的各種坑;
昨天利用妹妹的學生身份買了臺廉價的阿里ECS,購買成功後的第一反應當然是把本地的mysql遷移到服務器上以減輕我這個11年的老年機的負擔了,
話不多說,直接在服務器上敲起來,wget,yum命令一敲mysql8順利安裝!
接下來就是修改密碼了,思路大概就是在my.cnf(一般在/etc下)添加skip-grant-tables免密登錄,然後重啓mysql,然後再輸入mysql -u root -p命
令按兩次回車直接進mysql了;這裏我遇到了第一個坑,腦殘的我把skip-grant-tables加到my.cnf的註釋裏了,然後怎麼也跳不過去,真是自作自受了;
上面的步驟都成功了以後,可以輸入select host, user, authentication_string, plugin from mysql.user;查看mysq自帶的用戶表,其中host表示允許用戶登錄的 ip,% 表示可以遠程;user和authentication_string分別表示用戶名和
密碼,plugin表示加密方式;我們可以將root的默認密碼滯空,update mysql.user set authentication_string='' where user='root'; 然後通過exit退出mysql命令行,接着去把剛開始在my.cnf加的skip-grant-tables給註釋掉,重啓mysql
接着用mysql -u root -p登錄,遇到輸入密碼直接回車,因爲剛已經把密碼滯空了;進入mysql命令行以後使用ALTER user 'root'@'localhost' IDENTIFIED BY '新密碼';設置新密碼,需要注意的是設置的新密碼默認是有複雜度校驗的
如果不想校驗可以輸入set global validate_password.policy=0;執行成功就可以輸入簡單的密碼了
接下來就是重點了,也是讓我連個數據庫而浪費了一上午的元兇所在,以上標紅的字段一般就是坑之所在了;下面分三點依次解析:
1、要使遠程連接user表中root用戶對應的host的值應改爲"%"
2、然後就是修改加密方式了,命令ALTER mysql.USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼';然後刷新權限FLUSH PRIVILEGES;
不出意外的話,第一個alter命令就會失敗,因爲我root對應的host已經改成%號了,而百度到的所有修改加密方式的都是ALTER mysql.USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼';這又是我自己挖的
坑了,好在糾結半天后終於發現原因了,不然真是冤死了;有兩個解決辦法,可以把alter中的localhost改爲%或者直接將@'localhost'去掉,還可以將1/2兩步對調先改加密方式再改%就可以避免我這種苦逼的問題了;
3、最後設置密碼這塊是一樣的,如果你是最後將root用戶對應的host的值應改爲"%"的應該就不會有什麼問題,而如果跟我一樣首先就設置成%了,那麼ALTER user 'root'@'localhost' IDENTIFIED BY '新密碼';也會執行失敗,解決辦法和
2一樣;
數據庫這塊我們設置完後還要去阿里雲上配個安全組,將3306端口開發出來,管理控制檯==>雲服務器ECS==>實例,然後選中需要操作的實例點擊管理==>點擊本實例安全組==>點擊配置規則,最後點擊添加安全組規則;其中端口範圍:3306/3306;授權對象0.0.0.0/0就好;
下面總結一下本地連阿里雲ecs上mysql的一些步驟:
1、確定本地能ping通你自己ecs的公網ip
2、修改ecs上mysql對應用戶密碼的加密方式以及使其支持遠程連接
3、在ecs上開發3306端口
這樣基本上應該就能連接了,反正我是 踩了各種坑後終於圓滿了,現在填好希望以後不會再踩了!