天天看點

linux下mysql的使用者管理及通路問題

1.mysql的安裝配置

        linux下有一個很神奇的東西叫yum,隻要有源,用yum來安裝是一件非常容易的事,什麼都不用管,它會為你解決好一些軟體依賴的問題。一鍵安裝mysql:

        安裝完成後我們就可以使用mysql了:

        上面的操作都成功了,包括了登入到mysql,建立資料庫和建立一個使用者,其實在這個過程中我也遇到了幾個問題,花了一些時間,這個後面會說到。先看看mysql的主要配置檔案資訊:

       datadir=/var/lib/mysql是mysql資料庫的資料庫檔案存放位置,我剛才建立的資料庫db_test也在這個目錄下。log-error=/var/log/mysqld.log是資料庫輸出的日志,資料庫日志也是在/var/log目錄下。mysql預設的監聽端口是3306。

2.mysql的使用者管理

        安裝好mysql後,mysql會自動提供一個空密碼的root使用者,這個root不是linux的root,而空密碼的root使用者可以這樣登入:mysql -u root沒有後面的-p,-u是指使用者,-p是指通過密碼登入,然後就會提示輸入密碼。由于安全起見,剛開始應修改密碼為一個非空密碼,也可以避免以後操作的出錯,因為我遇到了好幾個問題都是和空密碼有聯系的。root修改密碼:

        将root的密碼改為123,因為我是已經改過root密碼的,是以這裡要加上-p還得輸入原來的密碼。

        當然除了root還可以有其他的使用者,mysql中使用者管理是通過一張表mysql.user,其實這也就是一張資料庫表,也是可以通過sql語句來操作的,建立使用者有兩種方式:

        第一種方式是grant,可以給使用者指定權限,all代表所有的權限,可以改成别的如select,insert,update,delete,後面的*.*代表是所有的資料庫都有權限,一般格式為:資料庫名.*,test是使用者名,123是密碼,localhost代表比對的主機,也可改為别的,如"",空的,代表所有主機。而第二種方式為直接修改資料庫表,但是沒有指定權限,為了安全起見,應該給使用者相應的權限。檢視user資訊也是一條sql語句,當然還可以用過select * from mysql.user;檢視更多的資訊,這裡的密碼是經過加密的。删除使用者也就是sql語句:delete

from mysql.user where user=‘xxx‘;。

        當然這樣還不行,在操作完user表後,還得加上一條指令flush privileges;重新整理系統權限表,不然就算添加的使用者也不能用,删除的使用者也可以登入。

3.通路mysql問題

        通路mysql最常出現問題的就是空密碼,剛開始我為了圖個友善就沒有修改root的密碼,讓它保持空的,但是在後面的操作就老是出現問題,而且是莫名其妙的問題,是以mysql安裝完成後建議将密碼改為非空。

        問題1.access denied for user ‘root‘@‘localhost‘ (using password: no)

                   access denied for user ‘root‘@‘localhost‘ (using password: yes)

        我沒有修改root密碼,就讓他保持為空的,然後通過mysql -u root來登入,登入過幾次之後,莫名其妙的報了using password: no的錯誤,好吧,那我就通過mysql -u root -p來登入,不用提示輸入密碼就直接回車,媽蛋還是報了using password: no的錯誤。那我就該一下密碼吧mysqladmin -u root -p password ‘123‘,報了mysqladmin: connect to server at ‘localhost‘ failed,using

password: yes的錯誤。

        于是通過mysqld_safe的方式啟動,檢視了mysql.user的資料,裡面的root密碼的确為空啊,我靠還能不能一起開心的玩耍啊。

        在網上搜了一下,很多人也遇到跟我一樣的問題,解決辦法就是修改user表将root的密碼改為非空:

        問題2.error 1044 (42000): access denied for user ‘‘@‘localhost‘ to database ‘db_mysql‘

        偶然的機會居然用空的root密碼登入進去了,然後建立資料庫db_mysql,就報了這樣一個錯誤,我明明是root登入的,怎麼變成空的了,這是個什麼使用者,我根本就沒建立這個使用者啊,然後select * from mysql.user;檢視,還真有這樣一個使用者,使用者名和密碼都是空的,可是我root登入的居然變成了這樣一個空使用者,原因我現在都還沒搞清楚,但是可以想到和root的密碼為空肯定有關系,于是又搜了一下解決辦法,将這個空使用者删除就ok了:

        出現這些問題都和密碼為空有關,當我把root密碼改為非空之後,再登入進行操作就沒有遇到過這些問題了,是以建議安裝好mysql後就修改root密碼。當然登入的時候密碼輸錯了也會出現using password: yes的錯誤,這個和空密碼無關。

繼續閱讀