MySQL 权限控制

2021-05-08  本文已影响0人  AD刘涛

MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权。

考虑以下内容:

获得所有用户账号列表

MySQL用户账号和信息存储在名为mysql的MySQL数据库中。

USE mysql;

SELECT user FROM user;

创建用户账号

CREATE USER ben IDENTIFIED BY '123456'

为重新命名一个用户账号,使用RENAME USER语句,如下所示:

RENAME USER ben TO bforta;

删除用户账号

DROP USER bforta

设置访问权限

在创建用户账号后,必须接着分配访问权限。

为看到赋予用户账号的权限,使用SHOW GRANTS FOR,如下所示:

SHOW GRANTS FOR bforta;

设置权限

为设置权限,使用GRANT语句。GRANT要求你至少给出以下信息:

用法:
GRANT SELECT ON database.* TO bforta;

授予只读权限,用户bforta 对database数据库中的所有数据具有只读访问权限。

GRANT INSERT ON database.* TO bforta;

授予插入权限,用户bforta对database数据库中的所有数据具有插入权限。

SHOW GRANTS FOR bforta;

SHOW GRANTS查看当前用户bforta所具备的权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

以上命令授予root用户对当前数据库所有权限

取消权限

GRANT的反操作为REVOKE,用它来撤销特定的权限。

REVOKE SELECT ON database.* FROM beforta;

这条REVOKE语句取消刚赋予用户bforta的SELECT访问权限。被 撤销的访问权限必须存在,否则会出错。

GRANT和REVOKE可在几个层次上控制访问权限:

更改口令

为了更改用户口令,可使用SET PASSWORD语句:

SET PASSWORD FOR bforta = Password('123456');

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

以上操作环境为 mysql 5.7

设置访问权限

设置root用户,可以访问mysql下的所有数据库
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

设置user用户,可以访问duodianyun数据库下的所有表
GRANT ALL PRIVILEGES ON duodianyun.* TO 'user'@'%';

以上操作环境为 mysql 8.0

参考链接 Authentication plugin 'caching_sha2_password' cannot be loaded

上一篇下一篇

猜你喜欢

热点阅读