標籤:date 使用者權限 建立使用者 需要 values 主機 test 資料庫操作 作用
上一節我們完成了mysql的安裝,現在我們將開啟實戰模式,完成一些基本的mysql操作。這節我們分為一些幾個內容:
-
-
- mysql中使用者建立
- mysql中使用者刪除
- mysql中使用者修改
- mysql中使用者查看
接下來的幾章的內容分布都是按照這個模式進行的----增刪改查,這也是資料庫的本質。
- mysql中使用者的建立:我們不是建立了root使用者了嗎?為什麼還需要建立使用者,原因很簡單,就像linux一樣,有了root,但是還是需要建立其他使用者,因為root的許可權太高,很多操作我們並不希望所有的使用者都有許可權執行。其實就是起到一個許可權控制的作用。
我們先查看一下mysq.user的表結構(由於屬性太多,採用命令select * from mysql.user\G來輸出)
可以看到其中有很多參數,select_privilege表達的是查詢的許可權。
新增加一個使用者: insert into mysql.user(Host,User,Password) values("localhost","libo",password("***"));
同樣的方式,我們通過命令查看,可以發現建立的使用者我們沒有任何許可權,所有許可權屬性都是N, 那是不是現在我們沒有對資料庫操作的任何許可權呢?
但是如果我們此時直接使用用建立的使用者登陸mysql的話會提示錯誤:ERROR 1045 (28000): Access denied for user ‘libo‘@‘localhost‘ (using password: YES),這是為什嗎?因為mysql不支援暖開機,我們在建立使用者的或者是進行使用者權限的操作時,其實mysql並沒有察覺到這個變化,所以我們使用flush privileges載入這個許可權更改。
但是登陸之後可以發現,我們並沒有許可權來操作資料庫,建立也不行。
localhost許可權問題: 如果我們在建立使用者時,我們制定的第一個參數是localhost,那麼我們就只能在本地進行登陸,遠程無法使用該使用者進行登陸,如果想要遠程登陸,那麼我們可以把這個參數改為%。
使用者權限問題: 如何給建立的使用者授予許可權?文法如下:
grant 許可權 on 資料庫.* to 使用者名稱@登入主機 identified by "密碼";
實驗一下,我們剛才建立的使用者libo並沒有賦予任何許可權,現在我們想要提供一些基本的新增的許可權,那麼我們可以這樣寫:
grant create on test.* to [email protected] identified by "***";
下面我們再測試一下現在能不能建立表了。
現在發現我們具有了新增的許可權,但是我們並沒有刪除的許可權。
2. 使用者刪除操作:
文法:(其實和普通table同樣的文法結構)delete fromt mysq.user where User="libo";
3. 使用者修改操作:
文法: update mysq.user set Host="%" where User="***";
4. 使用者查看操作:
文法: select * from mysql.user where user="***";
mysql由淺入深探究(二)----mysql使用者操作