MySQL5.7中添加用戶,新建數據庫,用戶授權,刪除用戶,修改密碼(注意每行后邊都跟個;表示一個命令語句結束):
登錄MySQL
mysql -u root -p
Enter password:密碼
1.列出所有數據庫
show database;
2.切換數據庫
use 數據庫名;
3.列出某個數據庫所有表
use 數據庫名;
show tables;
4.查詢數據
use 數據庫名;
select 字段名(多個字段用“,”隔開,*表示所有字段) from 數據表名;
也可以用 select 字段名(多個字段用“,”隔開,*表示所有字段) from 數據庫名.數據表名;
5.顯示數據表結構
describe 數據表名; # 也可以簡寫為 desc 數據表名;
也可以用 describe 數據庫名.數據表名;
6.刪除數據庫和數據表
drop database 數據庫名;
drop table 數據表名;
7.新建用戶
創建用戶:
insert into mysql.user(Host,User,Password) values("localhost","zhangsan",password("123456"));
需要注意的是,如上,用insert方法向MySQL5.7中添加用戶出現 ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value 的錯誤,MySQL5.7為了數據庫的安全默認是禁止這種方法來創建用戶的,所以應該避免用這種插入的方式來創建用戶,正確的創建用戶的方式是:
無密碼:create user '用戶名'@'localhost';
有密碼:create user '用戶名'@'localhost' identified by '密碼';
create user '用戶名'@'localhost' identified by '密碼'; # 本地登錄
create user '用戶名'@'%' identified by '密碼'; # 遠程登錄
exit # 退出數據庫
mysql -u 用戶名 -p # 測試是否創建成功
8.使用GRANT命令為賬戶授權(需在root賬戶下操作)
| GRANT命令的常見格式以及解釋 | |
| 命令 | 作用 |
| GRANT 權限 ON 數據庫.表名稱 TO 用戶名@登錄主機 | 對某個特定數據庫中的特定表給予授權 |
| GRANT 權限 ON 數據庫.* TO 用戶名@登錄主機 | 對某個特定數據庫中的所有表給予授權 |
| GRANT 權限 ON *.* TO 用戶名@登錄主機 | 對所有數據庫及所有表給予授權 |
| GRANT 權限1,權限2 ON 數據庫.* TO 用戶名@登錄主機 | 對某個數據庫中的所有表給予多個授權 |
| GRANT ALL PRIVILEGES ON *.* TO 用戶名@登錄主機 | 對所有數據庫及所有表給予全部授權(需謹慎操作) |
注意:授權的同時如需創建用戶並設置用戶密碼,用如下的命令
grant 權限 on 數據庫.* to '用戶名'@'登錄主機' identified by '密碼';
首先為用戶創建一個數據庫(testDB):
create database testDB;
如果需要指定數據庫的字符編碼為utf8,用如下命令:
create database testDB default charset utf8 collate utf8_general_ci;
(1)授權zhangsan用戶擁有testDB數據庫的所有權限(某個數據庫的所有權限):
grant all privileges on testDB.* to 'zhangsan'@'localhost';
flush privileges; # 刷新系統權限表
show grants for 'zhangsan'@'localhost'; # 查看賬戶 zhangsan 的權限
(2)如果想指定部分權限給zhangsan用戶,可以這樣來寫:
grant select,update on testDB.* to 'zhangsan'@'localhost';
flush privileges; # 刷新系統權限表
(3)授權zhangsan用戶擁有所有數據庫的某些權限:
grant select,delete,update,create,drop on *.* to 'zhangsan'@'%'; # 注意:需要mysql.user表中zhangsan賬戶對應的Host的字段值為“%”,才能正確執行此命令
# zhangsan用戶對所有數據庫都有 select,delete,update,create,drop 權限。
# @'%' 表示對所有非本地主機授權,不包括localhost。
# @'localhost' 表示對所有本地主機授權。
9.使用REVOKE命令取消賬戶權限
revoke select on *.* from 'zhangsan'@'localhost'; # 取消zhangsan對所有數據庫的查詢權限
revoke all on testDB.* from 'zhangsan'@'localhost'; # 取消zhangsan對testDB數據庫的所有權限
show grants for 'zhangsan'@'localhost'; # 查看賬戶 zhangsan 的權限
10.刪除用戶
delete from user where User='zhangsan' and Host='localhost';
flush privileges;
或者也可以使用如下命令,刪除賬戶及權限
drop user '用戶名'@'%';
drop user '用戶名'@ 'localhost';
11.修改指定用戶密碼
update mysql.user set authentication_string=password('新密碼') where User='zhangsan' and Host='localhost';
flush privileges;
注意:在 MySQL5.7 中 user 表已經不再使用 password 來作為密碼的字段了而改成了authentication_string。
