Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql用户管理和权限设置

mysql用户管理和权限设置方式

作者:哦...

这篇文章主要介绍了mysql用户管理和权限设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql用户管理和权限设置

MYSQL到底都有哪些权限呢?

从官网复制一个表来看看:

权限

权限级别

权限说明

CREATE

数据库、表或索引

创建数据库、表或索引权限

DROP

数据库或表

删除数据库或表权限

GRANT OPTION

数据库、表或保存的程序

赋予权限选项

REFERENCES

数据库或表

ALTER

更改表,比如添加字段、索引等

DELETE

删除数据权限

INDEX

索引权限

INSERT

插入权限

SELECT

查询权限

UPDATE

更新权限

CREATE VIEW

视图

创建视图权限

SHOW VIEW

视图

查看视图权限

ALTER ROUTINE

存储过程

更改存储过程权限

CREATE ROUTINE

存储过程

创建存储过程权限

EXECUTE

存储过程

执行存储过程权限

FILE

服务器主机上的文件访问

文件访问权限

CREATE TEMPORARY TABLES

服务器管理

创建临时表权限

LOCK TABLES

服务器管理

锁表权限

CREATE USER

服务器管理

创建用户权限

PROCESS

服务器管理

查看进程权限

RELOAD

服务器管理

执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限

REPLICATION CLIENT

服务器管理

复制权限

REPLICATION SLAVE

服务器管理

复制权限

SHOW DATABASES

服务器管理

查看数据库权限

SHUTDOWN

服务器管理

关闭数据库权限

SUPER

服务器管理

执行kill线程权限

MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等

这个可以从官方文档中的一个表来说明:

权限分布

可能的设置的权限

表权限

'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'

列权限

'Select', 'Insert', 'Update', 'References'

过程权限

'Execute', 'Alter Routine', 'Grant'

MySQL权限经验原则

权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:

MySQL权限实战

1. 创建用户

命令:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

说明:

例子:

CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';

2. 授权

命令:

GRANT privileges ON databasename.tablename TO 'username'@'host'

说明:

例子:

GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';

需要注意的是:

用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

3. 设置与更改用户密码

命令:

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前登录用户用:

SET PASSWORD = PASSWORD("newpassword");

例子:

SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

需要注意的是,从MySQL 5.7.6版本开始,MySQL不推荐使用此语法,会在将来的版本中将PASSWORD函数删除。

作为代替的解决方案,在8.0版本中直接使用明文密码:

SET PASSWORD FOR 'pig'@'%' = 'newpasswd2';

4. 撤销用户权限

命令:

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

说明:

privilege, databasename, tablename:同授权部分

例子:

REVOKE SELECT ON *.* FROM 'pig'@'%';

注意:

假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):

GRANT SELECT ON test.user TO 'pig'@'%'

则在使用

REVOKE SELECT ON *.* FROM 'pig'@'%';

命令并不能撤销该用户对test数据库中user表的SELECT 操作。

相反,如果授权使用的是

GRANT SELECT ON *.* TO 'pig'@'%';

REVOKE SELECT ON test.user FROM 'pig'@'%';

命令也不能撤销该用户对test数据库中user表的Select权限。

具体信息可以用命令

SHOW GRANTS FOR 'pig'@'%'; 

查看。

5. 删除用户

命令:

DROP USER 'username'@'host';

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文