标签:注意事项 超级 grants 长度 table 存储过程 导致 过程 帐户
简介:咱们来谈谈mysql用户和权限的东西吧
一 说明:
mysql的用户体系分为几部分构成
1 host(访问IP限制) 2 user(用户) 3 password(密码) 4 privileges(权限) 5 dbname(库) 6 tablename(表)
mysql授权表一共涉及到表,分别是user,tables_priv,columns_priv,db
1)user表
user表列出可以连接服务器的用户及其口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果你启用了DELETE权限,在这里列出的用户可以从任何表中删除记录,所以在你这样做之前要认真 考虑。
2)db表
db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。
3)tables_priv表
tables_priv表指定表级权限,在这里指定的一个权限适用于一个表的所有列。
4)columns_priv表
columns_priv表指定列级权限。这里指定的权限适用于一个表的特定列。
二 相关用户权限:
1 复制账户 grant REPLICATION SLAVE,REPLICATION Client
2 研发程序帐户(普通) grant select,insert,update,delete on dbname.* to =>只包含增删查该得权限
研发程序帐户(高级) grant select,insert,update,delete,create,create routine,EXECUTE,create view,show view,ALTER,tigger on dbname.* to
1 存储过程权限问题:最终执行存储过程的用户也即存储过程定义者要具备存储过程定义语句中相关的各种权限。DBA在执行创建存储过程时候一定要以研发帐户进行创建,否则即便研发帐户有执行存储过程的权限,也无法执行
2 视图权限问题:视图定义内部用户和host限制要尤其注意,可能导致用户无法访问视图(即便有show view权限)
3 千万不要授予研发drop权限(想删除前先备份)
3 DBA远程操作帐户 (在使用中)
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, PROCESS, INDEX, ALTER, SHOW DATABASES, SUPER, TRIGGER ON *.* TO ‘opdba‘@‘%‘ ;
以下是权限讲解
1 SUPER 执行kill命令
2 SELECT,INSERT,UPDATE,DELETE DML权限
3 CREATE DROP 创建删除权限
4 PROCESS 查看进程权限 (用于排查问题)
5 ALTER 执行DDL操作
6 TRIGGER 触发器权限(用于pt-osc执行DDL操作)
7 INDEX 索引权限
以上权限的组合对于我在日常工作中的所有工作已经完全够用,各位可以看着取舍
4 MHA 用户
建议 all privileges
5 监控用户(lepus)
grant SELECT, PROCESS, SUPER,REPLICATION CLIENT
6 inception用户
建议与研发普通账号相同即可
三 相关的管理
1 创建用户
1 password=`date +%s | sha256sum | base64 | head -c 12` 生成12位密码
2 grant 权限 to dbname.* to ‘pro_user‘@‘host‘ identified by 建议针对库级别来做限制(跨库查询的进行特殊处理)
2 查看授权语句
1 查看所有用户
SELECT DISTINCT CONCAT(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) AS query FROM mysql.user;
2 查看相应的授权语句
show grants for ‘user‘@‘host‘
3 对用户进行二次授权(添加新权限,添加新host等)
1 查看授权语句
2 直接进行授权即可(不会更改密码,这也算一个小技巧吧)
举例 添加新host
GRANT USAGE ON *.* TO ‘lepus_user‘@‘1.1‘ IDENTIFIED BY PASSWORD ‘*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19‘
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE ON `lepus`.* TO ‘lepus_user‘@‘localhost‘
授权
GRANT USAGE ON *.* TO ‘lepus_user‘@‘1.2‘ IDENTIFIED BY PASSWORD ‘*2470C0C06DEE42FD16C9D1E19‘
即可
4 删除用户
drop user ‘user‘@‘host‘ (一定要写全)
5 回收权限
revoke insert on lepus.* from ‘lepus_user‘@‘localhost‘;
6 操作完千万别忘了
flush privileges ;
四 注意事项
1 对于数据库用户的管理一定要开始就要规范起来,包括命名,长度,权限之类的
2 特别注意超级权限,拥有drop,alter用户的收集与管理
3 不建议直接对mysql.user表进行直接update delete操作
这就是我对mysql用户管理的见解
标签:注意事项 超级 grants 长度 table 存储过程 导致 过程 帐户
原文地址:http://www.cnblogs.com/danhuangpai/p/7651300.html