Mysql权限之授权,查看和回收以及删除用户

来自linux中国网wiki
Evan讨论 | 贡献2019年11月21日 (四) 09:55的版本 →‎mysql权限回收
跳到导航 跳到搜索

mysql权限之授权,查看和回收以及删除用户

mysql权限之授权

命令格式
grant 权限 on 数据库名.表名 to 用户名@登陆方式 identified by 'password1';

grant select,insert,update,delete on dbname.tablename to user@ip identified by 'password';
# 4 root 
grant all on *.*  to root@'127.0.0.1' identified by 'myFD23';

grant  select,insert,

update,delete  on  wiki.* to evan@'10.104.55.111' identified by  '12345678';

#程序用的用户  

GRANT Select,Update,insert,delete  ON dbname1.* TO app@"%"  IDENTIFIED BY "xxxxx";
GRANT Select,Update,insert,delete  ON dbname2.* TO app@"%"  IDENTIFIED BY "xxxxx";
#创建只读用户
GRANT SElECT ON *.* TO 'username'@'%' IDENTIFIED BY "password";
flush privileges;

小结:使用引号或双引号没有任何区别,主要是用于区别字符和命令 

mysql权限之密码修改

#mysql5.7 

update mysql.user set authentication_string=PASSWORD('123456#') where user='root';
flush privileges;
特别提醒注意的一点是,新版的mysql数据库下的user表中已经没有Password字段了

mysql授权查看

查看mysql中存在的用户 这个在回头查看授权时非常好用
mysql> select user,host from mysql.user;

([email protected]:)[mysql]> select user,host from mysql.user;
+------------+--------------------------+
| user       | host                     |
+------------+--------------------------+
| oldgirl    | %                        |
| wan        | %                        |
| wanlong    | %                        |
| rep        | 10.10.10.%               |
| root       | 10.10.10.%               |
| wan        | 10.10.10.%               |

查看MySQL用户权限:
show grants for 你的用户@ip; #根据上面 就可以 收集回原来的授权详情

show grants for 你的用户; # or


其它
#查看len数据库已经授权的用户
select user from mysql.db where db="dbname"

mysql> select * from mysql.user where user='root' \G    

#查看用户和IP ,下面的例子是查看 下面的库有没有 对 19.145.130.218 的dataviewre授权,对烦人的数据中心的报警很有用
show grants for dataviewer@'19.145.130.218';
这样就能看此机 哪些库对 dataviewer@’19.145.130.218‘ 有授权



查看MYSQL数据库中所有用户
mysql>SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;




常用权限

 1.select、insert、update和delete权限 允许你在一个数据库现有的表上实施操作,是基本权限 
2.alter权限允许你使用ALTER TABLE 
3.create和drop权限允许你创建新的数据库和表,或抛弃(删除)现存的数据库和表 如果你将mysql数据库的drop权限授予一个用户,该用户能抛弃存储了MySQL存取权限的数据库! 
4.grant权限允许你把你自己拥有的那些权限授给其他的用户。 
你不能明显地指定一个给定用户应该被拒绝存取。即,你不能明显地匹配一个用户并且然后拒绝连接。你不能指定一个用户有权创建立或抛弃一个数据库中的表,也不能创建或抛弃数据库本身。 可以同时列出许多被授予的单个权限。 
例如,如果想让用户能读取和修改已有表的内容,但又不允许创建新表或删除表,可按如下授权: 
GRANT SELECT,INSERT,DELETE,UPDATE ON samp_db.* TO 'user'@'%' IDENTIFIEDBY "pass"

#2017
<privileges>是一个用逗号分隔的你想要赋予的MySQL用户权限的列表。你可以指定的权限可以分为三种类型:

数据库/数据表/数据列权限: Alter: 修改已存在的数据表(例如增加/删除列)和索引。
Create: 建立新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。

全局管理MySQL用户权限:

file: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。

特别的权限:

ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录--其它什么也不允许做。

密码修改

update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
flush privileges;

mysql权限回收

#NOTE 这个回收后 用户还在的 只是看不到除了 的其它库了 information_schema

revoke INSERT,UPDATE,DELETE   on dbname.tablename from user@ip;
revoke all on user.* from tom@'localhost'; 

#最开始的权限 
([email protected]:)[mysql]> show grants for [email protected];
+-------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]                                                                                                            |
+-------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'sdk'@'10.104.103.162' IDENTIFIED BY PASSWORD '*dfds' |

删除用户

REVOKE语句只能取消用户的权限,而不可以删除用户。即使取消了所有的权限,用户仍然可以连接到服务器。要想彻底的删除用户,必须使用DELETE语句将该用户的记录从MySQL数据库中的user表中删除。
该语句的语法格式如下:
Delete from user where user = "user_name" and host = "host_name" ;
使用DELETE删除用户sss,代码如下:
delete from user where user='sss' and host='localhost' ;
flush privileges ; 

常见问题

问题1

 
授权后依然访问不了 

mysql> grant all on *.* to  root@'192.168.30.54' ;
Query OK, 0 rows affected (0.00 sec)

问题是 my.cnf bind-address问题
bind-address 127.0.0.1 
改为
bind-address 0.0.0.0


参考

mysql授权查看 http://blog.linuxchina.net/?p=950

mysql 权限回收 https://dev.mysql.com/doc/refman/5.7/en/revoke.html

SQL之Grant(分配权限)和Revoke(回收权限) http://liaoen.blog.51cto.com/2253541/819081

MySQL取消权限和删除用户 http://blog.linuxchina.net/?p=3437

mysql 数据库授权(给某个用户授权某个数据库) http://www.cnblogs.com/jifeng/archive/2011/03/06/1972183.html

美国国家航空航天局宣布在TRAPPIST-1附近发现7颗行星,并有数颗位于适居带。