細數本地連阿里雲上mysql8遇到的坑

  最近兩個月忙成狗,給了自己一個冠冕堂皇的不記錄博客的藉口,今天咬牙記錄一篇本地連阿里雲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端口

  這樣基本上應該就能連接了,反正我是 踩了各種坑後終於圓滿了,現在填好希望以後不會再踩了!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章