尚硅谷之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值排后面。
  • 服务器使用与客户端和用户名匹配的第一行