1. 程式人生 > >CentOS安裝mysql以及配置遠端登入

CentOS安裝mysql以及配置遠端登入

   前兩天剛買了個新的騰訊雲伺服器,上一臺阿里雲伺服器是很久以前配置的了,當初配置mysql遠端登入就有一些問題,這次果然也碰到了,還是寫個blog記錄下來,避免以後再踩坑吧。

    首先當然是在linux伺服器上安裝mysql,這個方法有很多種了,可以下載下來上傳上去安裝等等,我是使用命令列操作的

    首先,輸入命令wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm,就會下載下來這個檔案,然後輸入rpm -ivh mysql-community-release-el7-5.noarch.rpm,最後執行yum install mysql mysql-server mysql-devel -y就可以安裝完畢了,噹噹然目前只是完成了安裝並沒有啟動,如果要啟動的話Centos7是使用了systemctl命令了,systemctl start(stop/restart) mysql.service,Centos6及以下版本的應該是service命令(沒記錯的話...),這樣安裝的mysql配置檔案是/etc目錄下的my.cnf檔案,當然一般是不需要去改動的,但是出了bug或者以後做什麼主從複製之類的就要對這個檔案進行操作了,和其他服務一樣,對配置檔案進行了修改要生效都要先重啟服務。

    啟動服務完畢之後,可以使用netstat -anp|grep 3306命令來檢視mysql服務是否啟動,因為mysql服務是預設3306埠的,也可以使用systemctl status mysql.service檢視mysql狀態,啟動成功之後可以嘗試輸入命令mysql,這時就會進入到mysql命令列操作,那麼這時就說明啟動成功了。下一步就是修改密碼,預設是沒有密碼,root使用者,那麼設定密碼就是先退出mysql命令列,然後輸入mysql -u root password "你的密碼",這時會跳出一行warning,無關緊要,接下來輸入mysql你就會發現無法登陸了,必須要mysql -u root -p才能使用密碼登入。這就算一個數據庫配置完成了。

    但是很多時候,部署在伺服器上的資料庫,我們是要通過本地進行遠端連線進行操作的,比如在windows系統上裝一個navicat進行操作,但是單純的和windows上mysql一樣去連線,只修改了localhost為遠端伺服器ip,發現是失敗的,這有很多原因,需要一步步修改,下面詳細說一下。

   1、首先,你要去你的雲伺服器管理站,阿里雲騰訊雲等等,去找安全組設定,開放一個3306埠的安全組,至於怎麼設定安全組實在是很簡單就不提了。如果你不開放一個入方向的3306埠,那麼無論在伺服器如何配置,你都是沒用的,因為他直接攔截了針對這個埠的所有請求。

    2、其次,登入進入mysql,然後輸入命令use mysql;進入mysql資料庫,裡面有一個表,儲存了主要有host,user,password三個元素,就和名字一樣,host表示允許哪些host連線,user表示使用者名稱,password表示密碼,你可以使用select語句檢視這些,就會發現目前root使用者的host只有127.0.0.1和localhost,我們都知道這兩個都是本機,所以這就是遠端無法連線,出現1045等錯誤的原因,那麼,是不是和網上說的一樣,把這個host修改為%,表示通配所有ip的主機,就能讓所有主機都能訪問呢?

   3、像上面那樣設定,是可以的,遠端就能訪問了,但是那樣我們會發現。。。回到伺服器上,伺服器上無法登入到mysql了,這是為什麼呢?我查了資料說的原因是設定為%之後它允許所有主機登入,但是就是會排除掉localhost,所以還得重新修改,然後就會發現網上方法很複雜了,就要先去修改my.inf輸入skip_grant_tables,關閉認證,然後再去修改user表等等,很複雜。。。。。但是我們發現,其實這些所謂的操作最後都是讓mysql的user表裡面有兩個關鍵元祖,一個是host是%,一個host是localhost而已,而我們最開始修改完密碼之後就有了host是localhost這個元祖了,後面的操作反而會把這裡面的localhost修改成了%,導致出現了錯誤,所以我採用的方法就是給它插入一個元祖,user和password不變,就是host為%,然後flush privileges,最後重啟服務,然後遠端就能連線到資料庫了。

    這就是一次伺服器安裝mysql配置遠端訪問的經歷,希望能夠讓大家避免踩坑,能夠起一些微小的幫助。