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权限经验原则
权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:
- 1、只授予能满足需要的最小权限,防止用户干坏事。比如用户只是需要查询,那就只给select权限就可以了,不要给用户赋予update、insert或者delete权限。
- 2、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
- 3、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。
- 4、为每个用户设置满足密码复杂度的密码。
- 5、定期清理不需要的用户。回收权限或者删除用户。
MySQL权限实战
1. 创建用户
命令:
|
1
|
CREATE USER 'username'@'host' IDENTIFIED BY 'password'; |
说明:
username:你将创建的用户名host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
例子:
|
1
2
3
4
5
|
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. 授权
命令:
|
1
|
GRANT privileges ON databasename.tablename TO 'username'@'host' |
说明:
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALLdatabasename:数据库名tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*
例子:
|
1
2
3
|
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';GRANT ALL ON *.* TO 'pig'@'%';GRANT ALL ON maindataplus.* TO 'pig'@'%'; |
需要注意的是:
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
|
1
|
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION; |
3. 设置与更改用户密码
命令:
|
1
|
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword'); |
如果是当前登录用户用:
|
1
|
SET PASSWORD = PASSWORD("newpassword"); |
例子:
|
1
|
SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456"); |
需要注意的是,从MySQL 5.7.6版本开始,MySQL不推荐使用此语法,会在将来的版本中将PASSWORD函数删除。
作为代替的解决方案,在8.0版本中直接使用明文密码:
|
1
|
SET PASSWORD FOR 'pig'@'%' = 'newpasswd2'; |
4. 撤销用户权限
命令:
|
1
|
REVOKE privilege ON databasename.tablename FROM 'username'@'host'; |
说明:
privilege, databasename, tablename:同授权部分
例子:
|
1
|
REVOKE SELECT ON *.* FROM 'pig'@'%'; |
注意:
假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):
|
1
|
GRANT SELECT ON test.user TO 'pig'@'%' |
则在使用
|
1
|
REVOKE SELECT ON *.* FROM 'pig'@'%'; |
命令并不能撤销该用户对test数据库中user表的SELECT 操作。
相反,如果授权使用的是
|
1
|
GRANT SELECT ON *.* TO 'pig'@'%'; |
则
|
1
|
REVOKE SELECT ON test.user FROM 'pig'@'%'; |
命令也不能撤销该用户对test数据库中user表的Select权限。
具体信息可以用命令
|
1
|
SHOW GRANTS FOR 'pig'@'%'; |
查看。
5. 删除用户
命令:
|
1
|
DROP USER 'username'@'host'; |
总结
以上为个人经验,希望能给大家一个参考。
学习资料见知识星球。
以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。
快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利!
更多技巧, www.excelbook.cn
欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;
1、价值上万元的专业的PPT报告模板。
2、专业案例分析和解读笔记。
3、实用的Excel、Word、PPT技巧。
4、VIP讨论群,共享资源。
5、优惠的会员商品。
6、一次付费只需129元,即可下载本站文章涉及的文件和软件。

