MYSQL权限管理

MYSQL权限管理

在MySQL数据库中,使用grant命令授权、 revoke命令撤销授权。

授权:grant to

grant all privileges on databaseName.tableName to ‘用户名’ [@‘主机名’] ;

撤销授权 revoke from

revoke all privileges on databaseName.tableName from ‘用户名’ [@‘主机名’] ;

刷新权限

FLUSH PRIVILEGES;

查看权限

show grants for ‘用户名’ [@‘主机名’] ;

使用grant和revoke进行授权、撤销授权时,需要指定具体是哪些权限,这些权限大体可以分为3类,
数据类、结构类和管理类。

数据 结构 管理
SELECT INSERT UPDATE DELETE FILE CREATE ALTER INDEX DROP CREATE TEMPORARY TABLES SHOW VIEW CREATE ROUTINE ALTER ROUTINE EXECUTE CREATE VIEW EVENT TRIGGER USAGE GRANT SUPER PROCESS RELOAD SHUTDOWN SHOW DATABASES LOCK TABLES REFERENCES REPUCATION CUENT REPUCATION SLAVE CREATE USER

实例:

查看用户的权限:

新增用户

show grants for “xiaoluo”:

给用户xiaoluo 赋予数据库mydb中的所有表的查询权限;

grant select on mydb to “xiaoluo”;

MYSQL权限管理

移除用户的查询权限

revoke select on mydb.* from “xiaoluo”@"%";

MYSQL权限管理

给xiaoluo 赋予表area的查询和修改权限:

grant select, update on mydb.area to “xiaoluo”@"%";

MYSQL权限管理
只有查询和修改权限,进行删除操作时,系统报错:提示无权限

MYSQL权限管理

修改用户密码:

alter user “user_name”@"%" identified by “new_password”;

指定用户登录IP :限定用户登录的IP 。如果IP不对,即使用户名和密码正确也不能登录!

update user set host=“192.168.0.104” where User=“xiaoluo”;

MYSQL权限管理
MYSQL权限管理

禁止root 用户远程登录:

在实际工作中,一般情况下都会禁止root用户远程登录,请问这是为什么?

  1. root是MySQL数据库的超级管理员,几乎拥有所有权限,一旦泄露后果非常严重;
  2. root是MySQL数据库的默认用户,所有人都知道,如果不禁止远程登录,可以针对root用户暴力**密码。

mysql 用户名实际上是由两部分组成的:用户名@用户地址

对于root用户。我们需要设置地址为:localhost .这样就可以保证别人无法远程登录root 用户。只能在本地登录

mysql 中用户的信息都在同一个表中,mysql.user 表。

这个表中存在所有系统中的用户信息,包含用户名称、用户连接得知、用户权限、用户密码管理(过期设置等)

MYSQL权限管理
小结:对于数据库权限。通常root用户设置为不可远程登录:localhost 登录。对于权限要求高的地方。可以指定每个用户登录的IP 。以及每个用户的具体权限:哪个数据库,哪个表,那一列等。也可以指定新的用户具备管理员的部分权限进行管理工作。