mysql用户权限管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql用户权限管理相关的知识,希望对你有一定的参考价值。

  mysql数据在实际生产环境中大量被使用,那平时在做好服务器上防火墙策略以外平时,对mysql下的用户权限也要严格管理,mysql的用户权限都是放在mysql.user这张表里,平时的用户权限管理都是隐式使用着这张表的,先说下权限:

权限
意义
select
查询
insert插入
update更新
delete删除记录,一般用于清空表或者某一条记录
create创建
drop删除,从表空间里删除
grant授予,一般用于给用户授权
references引用
index索引
alter修改表
create temporary tables创建临时表
lock tables
锁表
execute执行存储过程,这个比较少用
create view创建视图
show view查看视图
create routine创建存储过程
alter routine修改存储过程
event事务管理,相当于unix系统中的cron任务,通过mysq.event表中设定定时任务
trigger触发器

如果是普通用户一般都是给一些基本的增删改查的权限就够了,平时管理一般就用以下权限:

mysql> SELECT DISTINCT CONCAT(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) AS query FROM mysql.user;
#查所有用户,授予哪个主机的权限,CONCAT整理下查看时会比较清晰直观
mysql> show grants for ‘root‘@‘127.0.0.1‘;
#用于查看用名对应主机下的权限
mysql> grant all *.* to ‘test‘@‘127.0.0.1‘ identified by "youpasswd";
#授予test在127.0.0.1下所有库的所有权限登录密码youpasswd,这个如果这个用户没有被创建会隐式
creat用户,这里要注意的是普通用户给这个权限肯定不行,权限太高,比如当前库下有一个daemon库,
给test基本权限,如
CREATE USER ‘test‘@‘127.0.0.1‘ IDENTIFIED BY "youpasswd";
GRANT SELECT, INSERT, UPDATE, DELETE ON `daemon`.* TO ‘test‘@‘127.0.0.1‘;
#在这里可以creat创建后再限定权限,当然也可以写
GRANT SELECT, INSERT, UPDATE, DELETE ON `daemon`.* TO ‘test‘@‘127.0.0.1‘ IDENTIFIED BY "youpasswd";
#当然这里都是给固定主机的权限,也可以给某个地址段,如10.0.%,或者是任意ip即%,当然在实际生产环境
中这样是不允许的
REVOKE INSERT ON `daemon`.* FROM ‘test‘@‘127.0.0.1‘;
#移除权限
drop user [email protected];
#删除用户
#以上的的操作都会隐式FLUSH PRIVILEGES刷新授权表
UPDATE user SET Password = PASSWORD(‘newpasswd‘) WHERE user = ‘test‘;
FLUSH PRIVILEGES;
#利用update跟新test密码,需要FLUSH PRIVILEGES刷新授权表
select password(‘newpasswd‘);
#生成依赖于mysql的哈希加密的密码,多用于程序内部使用mysql给权限时使用

   基本,在平时管理mysql用户权限里大概使用的就是这么多,还有要注意的是在给主机权限的时候要注意2点:能使用内网就一定要内网;要尽量避免使用用域名,能用ip就用ip,以免mysql中DNS反解析,可以在启动时使用

/usr/local/mysql/bin/mysqld_safe --skip-name-resolve --user=mysql&
添加--skip-name-resolve参数,当然最好是在my.cnf或者是my.ini中加skip-name-resolve参数


本文出自 “技术随笔” 博客,谢绝转载!

以上是关于mysql用户权限管理的主要内容,如果未能解决你的问题,请参考以下文章

gitlab 权限说明

MySQL的用户管理与权限管理

MySQL的用户管理与权限管理

JS+JavaBean判断管理员增删改的操作权限

MySQL用户及权限管理

MySQL—— 用户创建和权限管理