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权限回收
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颗行星,并有数颗位于适居带。