尚硅谷之MySQL基础
2、 账号管理
2.1创建或更改账号
语句命令方式
有两种方法:
- 使用GRANT语法创建(推荐)
- 直接insert,update权限表
GRANT 权限类型列表 on object_type {表名称|*|*.*|db_name.*} to user [identified by password ‘密码’][,user [identified by password ‘密码’] .... with grant option; 其中:object_type = TABLE | FUNCTION | PROCEDURE |
示例:
例1:创建用户admin,权限为可以在所有数据库上执行所有权限,但只能从本地进行连接
GRANT ALL PRIVILEGES ON *.* TO admin@localhost; |
可以发现除了Grant_priv权限外,所有权限在user表里面都是Y.
例2:在例1基础上,增加对admin的grant权限
GRANT ALL PRIVILEGES ON *.* TO admin@localhost WITH GRANT OPTION; |
例3:在例2基础上,设置密码为“123”
GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY '123' WITH GRANT OPTION; |
例4:创建新用户chai,可以从任何IP进行连接,权限为对test数据库的所有表进行SELECT、UPDATE、INSERT、DELETE操作,初始密码为“123”
GRANT SELECT,INSERT,UPDATE,DELETE ON test.* TO 'chai'@'%' IDENTIFIED BY '123'; |
发现此例,user表中权限都是N,db表中增加的记录权限则都是Y。
注意:
- mysql数据库的user表中user的值为空,表示所有用户都可以连接(此处不能用*,*表示用户名为*的用户了)
- mysql数据库的user表中host的值为*或空,表示所有外部IP都可以连接,但是不包括本地服务器localhost,因此如果要包括本地服务器,必须单独为localhost赋予权限。如果host的值为%,表示所有IP,包括本地服务器localhost。
Host值 |
User值 |
被条目匹配的连接 |
‘thomas.loc.gov’ |
‘fred’ |
fred,从thomas.loc.gov连接 |
‘thomas.loc.gov’ |
‘’ |
任何用户,从thomas.loc.gov连接 |
‘%’ |
‘fred’ |
fred,从任何主机连接 |
‘%’ |
‘’ |
任何用户,从任何主机连接 |
‘%.loc.gov’ |
‘fred’ |
fred,从在loc.gov域的任何主机连接 |
‘x.y.%’ |
‘fred’ |
fred,从在x.y.net,x.y.com等主机连 |
‘144.155.166.177’ |
‘fred’ |
fred,从144.155.166.177的IP地址连接 |
‘144.155.166.%’ |
‘fred’ |
fred,从‘144.155.166.*的C类子网的任何主机连接 |
如果有多个匹配,服务器必须选择使用哪个条目,按照下述原则来解决:
- 服务器在启动时读入user表后进行排序
- 首先以最具体的host值排序,%排后面,如果host相同,以最具体的user值排序,空User值排后面。
- 服务器使用与客户端和用户名匹配的第一行