Mysql(用户相关命令)查看所有用户及权限、删除创建用户等命令
2015-07-28 09:58
851 查看
最近工作中涉及安全问题,需要检测各种数据库用户和权限是否安全,整理下常用命令。
+-----------------------------------+
| query |
+-----------------------------------+
| User: 'slave'@'%'; |
| User: 'root'@'127.0.0.1'; |
| User: 'root'@'::1'; |
| User: 'mysql_backup'@'localhost'; |
| User: 'root'@'localhost'; |
+-----------------------------------+
5 rows in set (0.00 sec)
哇,所有用户都出来了,包括允许哪些ip访问,@''后面就是 host啦 , %代表任何ip都可以访问,127和localhost当然是只能本地访问。
+--------------------------------------------------------------------------------------------------------------------------------------+
| Grants for slave@% |
+--------------------------------------------------------------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%' IDENTIFIED BY PASSWORD '*F667FA72F8DDCB1733B52150E4FAE70BD5086720' |
+--------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
show grants命令一条条对着查出来的用户看,把权限过大的用户找出来。
mysql> select * from mysql.user where user='root' \G
也可以这么查,但是推荐show grants
123123是密码
删除账户及权限: mysql> drop user 'test2'@'%';
grant select on *.* to 'test'@'%'; #select 为要授予的权限 *.*第一个*为数据库 第二个为表 *.*代表所有库所有表。
收回权限: mysql> revoke select on *.* From 'test'@'%';
1,当然是要先知道mysql有那些用户才好做下一步检查喽。检查所有MySQL用户
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;+-----------------------------------+
| query |
+-----------------------------------+
| User: 'slave'@'%'; |
| User: 'root'@'127.0.0.1'; |
| User: 'root'@'::1'; |
| User: 'mysql_backup'@'localhost'; |
| User: 'root'@'localhost'; |
+-----------------------------------+
5 rows in set (0.00 sec)
哇,所有用户都出来了,包括允许哪些ip访问,@''后面就是 host啦 , %代表任何ip都可以访问,127和localhost当然是只能本地访问。
2,检查出来用户以后我们当然要知道他们都有什么权限咯,一切为了安全么。检查每个用户权限
mysql> show grants for 'slave'@'%';+--------------------------------------------------------------------------------------------------------------------------------------+
| Grants for slave@% |
+--------------------------------------------------------------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%' IDENTIFIED BY PASSWORD '*F667FA72F8DDCB1733B52150E4FAE70BD5086720' |
+--------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
show grants命令一条条对着查出来的用户看,把权限过大的用户找出来。
mysql> select * from mysql.user where user='root' \G
也可以这么查,但是推荐show grants
3,发现不靠谱的用户直接干掉~!!删除Mysql用户。创建删除用户
先创建个用户:mysql> CREATE USER 'test'@'%' IDENTIFIED BY '123123'; #test用户名 %代表允许任何ip访问123123是密码
删除账户及权限: mysql> drop user 'test2'@'%';
4,授权不合适,收回,重新授权。用户授权回收权限
授权: mysql>grant select on *.* to 'test'@'%'; #select 为要授予的权限 *.*第一个*为数据库 第二个为表 *.*代表所有库所有表。
收回权限: mysql> revoke select on *.* From 'test'@'%';
5,权限也不行,改了它密码,不给你登陆。修改用户密码
mysql>SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复
- MySQL 优化
- MySQL 数据类型