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
等,如果要授予所的权限则使用ALL
databasename
:数据库名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、一次付费只需99元,即可下载本站文章涉及的文件和软件。
共有 0 条评论