創建新用戶
create user lisi identified by '123456';
查看創建結果:
授權
命令格式:grant privilegesCode on dbName.tableName to username@host identified by "password";
命令說明:
privilegesCode表示授予的權限類型,常見有:
- all privileges:所有權限;
- select:讀取權限;
- delete:刪除權限;
- update:更新權限;
- create:創建權限;
- drop:刪除數據庫、數據表權限。
dbName.tableName表示授予權限的具體庫或表,常用有:
- “ *.* ”點號表示授予用戶所有數據庫和表的權限;
- dbName.*:授予dbName數據庫所有表的權限;
- dbName.dbTable:授予數據庫dbName中dbTable表的權限。
username@host中的host表示允許登錄的IP,常見有:
- localhost:只允許該用戶在本地登錄,不能遠程登錄;
- %:允許遠程登錄;
- 192.168.12.34:具體的IP表示只允許該用戶從特定IP登錄。
新建一個數據庫 dblisi:create database dblisi;
賦權李四去使用數據庫dblisi:允許遠程,密碼為123456
grant all privileges on dblisi.* to lisi@'%' identified by '123456';
刷新權限:flush privileges;
退出用賬號lisi登錄:mysql -u lisi -p
輸入密碼123456
登陸成功后切換數據庫:
可見只有數據庫dblisi的使用權。
update mysql.user set password = password('12345678') where user = 'lisi' ;
注意:在mysql8的版本中授權命令發生了改變,先: create user root@‘%’ identified by '123456'; 再:grant all privileges on *.* to 'root'@'%';
里面的*和%就自選了。
修改用戶密碼
直接修改登錄用戶的密碼:
雖然0 rows affected,刷新失敗,但是退出去用密碼123可以登錄進來;
遠程也能連接:
登錄root,修改密碼為123,刷新,如下:
同樣 0 rows affected,但是刷新成功;
遠程登錄卻失敗:
這是個奇怪的現象。看來修改root密碼用set password並不行。換一個方式:

連接成功!
注意,新版的mysql下authentication_string才是密碼字段。
刪除用戶
drop user username@'%';