標籤:io os sp 檔案 資料 on bs ad as
MySQL 預設有個root使用者,但是這個使用者權限太大,一般只在管理資料庫時候才用。如果在項目中要串連 MySQL 資料庫,則建議建立一個許可權較小的使用者來串連。
在 MySQL 命令列模式下輸入如下命令可以為 MySQL 建立一個新使用者:
CREATE USER username IDENTIFIED BY ‘password‘;
新使用者建立完成,但是此刻如果以此使用者登陸的話,會報錯,因為我們還沒有為這個使用者指派相應許可權,分配許可權的命令如下:
GRANT ALL PRIVILEGES ON *.* TO ‘username‘@‘localhost‘ IDENTIFIED BY ‘password‘;
授予username使用者在所有資料庫上的所有許可權。
GRANT REPLICATION SLAVE ON *.* TO ‘backup‘@‘address‘ IDENTIFIED BY ‘backup_xxx‘; 建立主從同步資料的帳號
如果此時發現剛剛給的許可權太大了,如果我們只是想授予它在某個資料庫上的許可權,那麼需要切換到root 使用者撤銷剛才的許可權,重新授權:
REVOKE ALL PRIVILEGES ON *.* FROM ‘username‘@‘localhost‘;
GRANT ALL PRIVILEGES ON dbnames.* TO ‘username‘@‘localhost‘ IDENTIFIED BY ‘password‘;
甚至還可以指定該使用者只能執行 select 和 update 命令:
GRANT SELECT, UPDATE ON dbnames.* TO ‘username‘@‘localhost‘ IDENTIFIED BY ‘password‘;
這樣一來,再次以username登陸 MySQL,只有dbnames資料庫是對其可見的,並且如果你只授權它select許可權,那麼它就不能執行除select之外的語句。
另外每當調整許可權後,通常需要執行以下語句重新整理許可權:
FLUSH PRIVILEGES;
刪除剛才建立的使用者:
DROP USER [email protected];
仔細上面幾個命令,可以發現不管是授權,還是撤銷授權,都要指定響應的host(即 @ 符號後面的內容),因為以上及格命令實際上都是在操作mysql資料庫中的user表,可以用如下命令查看相應使用者及對應的host:
SELECT User, Host FROM user;
當然,這個表中還包含很多其它例如使用者密碼、使用權限設定等很多內容,操作時候尤其需要小心。
忘記Root密碼:
開啟防火牆,確保在其他人不會串連到資料庫的時候:
關閉Mysql,並修改設定檔(my.cnf): 在[mysqld]下面添加:skip-grant-tables。
重啟mysql,串連之後即可修改root密碼
Mysql使用者相關操作